Skip to content

Kafka Destination

The Kafka destination publishes processed messages to Apache Kafka topics. It supports SASL authentication, TLS encryption, key-based partitioning, and multiple compression codecs.

Add a Kafka destination to a channel in intu.yaml:

destinations:
- name: patient-events
type: kafka
properties:
brokers:
- "kafka-1.example.com:9092"
topic: "patient.events"
client_id: "intu-producer"
PropertyTypeDefaultDescription
brokerslist(required)One or more Kafka broker addresses (host:port).
topicstring(required)Target topic name.
client_idstringintu-producerClient identifier reported to the Kafka cluster.
keystringPartition key. Supports field references like ${body.patientId} to co-locate related messages on the same partition.
compressionstringnoneCompression codec: none, gzip, snappy, lz4, or zstd.

Configure SASL authentication under the auth block.

auth:
type: sasl_plain
username: "${KAFKA_USER}"
password: "${KAFKA_PASS}"
auth:
type: sasl_scram_256
username: "${KAFKA_USER}"
password: "${KAFKA_PASS}"
auth:
type: sasl_scram_512
username: "${KAFKA_USER}"
password: "${KAFKA_PASS}"

Enable TLS for broker connections:

tls:
enabled: true
ca_cert: "/etc/intu/certs/kafka-ca.pem"
client_cert: "/etc/intu/certs/kafka-client.pem"
client_key: "/etc/intu/certs/kafka-client-key.pem"

A Kafka destination with three brokers, SASL/SCRAM-SHA-512 authentication, TLS, and key-based partitioning:

destinations:
- name: adt-events
type: kafka
properties:
brokers:
- "kafka-1.hospital.org:9093"
- "kafka-2.hospital.org:9093"
- "kafka-3.hospital.org:9093"
topic: "hl7.adt.events"
client_id: "intu-adt-producer"
key: "${body.patientId}"
compression: zstd
auth:
type: sasl_scram_512
username: "${KAFKA_USER}"
password: "${KAFKA_PASS}"
tls:
enabled: true
ca_cert: "/etc/intu/certs/kafka-ca.pem"