Redpanda Connector Guide

The Redpanda connector (redpanda-1.0.0) targets Kafka-compatible event streaming through a Redpanda broker. The current native implementation mirrors the legacy connector: it validates broker_host on test but does not open a Kafka wire connection. produce, consume, and test (with valid broker_host) return success: false with a fixed native-client-required message.

Document information
FieldValue
Canonical URL/docs/04_connecting-systems/connectors/r/redpanda
Version (published date)2026-05-08
Tagsconnectors, reference, redpanda
Connector IDredpanda-1.0.0

Redpanda connector workflow showing broker-authenticated message publishing, topic-based consumption, and event-driven workflow processing across distributed systems.

Configuration and connectivity

Configure the connector with the Redpanda broker endpoint for your environment. broker_port and timeout_seconds are loaded from integration configuration (defaults 9092 and 30) but are not used by the current stub runtime.

  • broker_host (required): Redpanda broker host. test fails with Configuration validation failed when this is empty.
  • broker_port (optional): Broker port; default 9092.
  • timeout_seconds (optional): Request timeout in seconds; default 30.

Produce messages with produce

Legacy and native runtimes expose produce (not send). The current stub does not read call data and always returns the Kafka-client-required error below.

const baseUrl = "https://api.example.com/api/v1";
const tenantId = "<TENANT_ID>";
const apiKey = "<API_KEY>";

async function produceOrderEvent(integrationId: string) {
  const response = await fetch(`${baseUrl}/integrations/${encodeURIComponent(integrationId)}/execute`, {
    method: "POST",
    headers: {
      "X-API-Key": apiKey,
      "X-Tenant-ID": tenantId,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      operation: "produce",
      topic: "orders.events",
      key: "<ENTITY_ID>",
      message: {
        event_type: "order.created",
        order_id: "<ENTITY_ID>",
        total: 129.5,
        occurred_at: "2026-05-08T14:15:00Z",
      },
    }),
  });
  if (!response.ok) throw new Error(`Request failed: ${response.status}`);
  return response.json();
}
curl -X POST "https://api.example.com/api/v1/integrations/<ENTITY_ID>/execute" \
  -H "X-API-Key: <API_KEY>" \
  -H "X-Tenant-ID: <TENANT_ID>" \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "produce",
    "topic": "orders.events",
    "key": "<ENTITY_ID>",
    "message": {
      "event_type": "order.created",
      "order_id": "<ENTITY_ID>",
      "total": 129.5,
      "occurred_at": "2026-05-08T14:15:00Z"
    }
  }'
{
  "success": false,
  "error": {
    "code": "UNKNOWN",
    "message": "Redpanda requires a native Kafka client. Use kafkajs, node-rdkafka, or a REST proxy for full implementation.",
    "retriable": false
  },
  "metadata": {
    "processing_time_ms": 1
  }
}

Consume messages with consume

Legacy and native runtimes expose consume (not receive). The current stub does not read call data and returns the same Kafka-client-required error as produce.

const baseUrl = "https://api.example.com/api/v1";
const tenantId = "<TENANT_ID>";
const apiKey = "<API_KEY>";

async function consumeOrderEvents(integrationId: string) {
  const response = await fetch(`${baseUrl}/integrations/${encodeURIComponent(integrationId)}/execute`, {
    method: "POST",
    headers: {
      "X-API-Key": apiKey,
      "X-Tenant-ID": tenantId,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      operation: "consume",
      topic: "orders.events",
      max_messages: 10,
      consumer_group: "workflow-orders-processor",
    }),
  });
  if (!response.ok) throw new Error(`Request failed: ${response.status}`);
  return response.json();
}
curl -X POST "https://api.example.com/api/v1/integrations/<ENTITY_ID>/execute" \
  -H "X-API-Key: <API_KEY>" \
  -H "X-Tenant-ID: <TENANT_ID>" \
  -H "Content-Type: application/json" \
  -d '{
    "operation": "consume",
    "topic": "orders.events",
    "max_messages": 10,
    "consumer_group": "workflow-orders-processor"
  }'
{
  "success": false,
  "error": {
    "code": "UNKNOWN",
    "message": "Redpanda requires a native Kafka client. Use kafkajs, node-rdkafka, or a REST proxy for full implementation.",
    "retriable": false
  },
  "metadata": {
    "processing_time_ms": 1
  }
}

Test connectivity with test

test validates only that broker_host is non-empty. When broker_host is missing, the connector returns Configuration validation failed. With a valid host, it returns the same Kafka-client-required stub error as produce/consume (no broker connection is attempted).

{
  "success": false,
  "error": {
    "code": "VALIDATION",
    "message": "Configuration validation failed",
    "retriable": false
  },
  "metadata": {
    "processing_time_ms": 0
  }
}

Reliability guidance

The redpanda-1.0.0 connector is intentionally a legacy stub: the current runtime does not include a Kafka client. For real produce/consume against Redpanda, plan a new connector version with an explicit Kafka wire client (kafkajs, node-rdkafka, or a REST proxy) and documented topic/payload contracts.

Additional resources