Skip to content

Kafka Clustering

Cross-node broadcasting via Kafka. Messages broadcast on one node are delivered to clients on all nodes.

<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-kafka</artifactId>
<version>LATEST</version> <!-- check Maven Central for latest -->
</dependency>

Configure the broadcaster class and Kafka connection:

org.atmosphere.cpr.broadcasterClass=org.atmosphere.kafka.KafkaBroadcaster
org.atmosphere.kafka.bootstrap.servers=localhost:9092
atmosphere:
broadcaster-class: org.atmosphere.kafka.KafkaBroadcaster
init-params:
org.atmosphere.kafka.bootstrap.servers: localhost:9092
PropertyDefaultDescription
org.atmosphere.kafka.bootstrap.serverslocalhost:9092Kafka broker(s)
org.atmosphere.kafka.topic.prefixatmosphere.Topic name prefix
org.atmosphere.kafka.group.idauto-generatedConsumer group ID

KafkaBroadcaster extends DefaultBroadcaster and publishes every broadcast message to a Kafka topic. Each node runs a consumer that polls for messages and delivers them to local clients. A node ID Kafka header (atmosphere-node-id) prevents echo.

Topic names are derived from the broadcaster ID: <prefix><sanitized-broadcaster-id>.

The consumer loop runs on a virtual thread.

ClassPurpose
KafkaBroadcasterBroadcaster that publishes/consumes via Kafka topics