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>4.0.13</version>
</dependency>Configure the broadcaster class and Kafka connection:
org.atmosphere.cpr.broadcasterClass=org.atmosphere.kafka.KafkaBroadcaster
org.atmosphere.kafka.bootstrap.servers=localhost:9092atmosphere:
broadcaster-class: org.atmosphere.kafka.KafkaBroadcaster
init-params:
org.atmosphere.kafka.bootstrap.servers: localhost:9092| Property | Default | Description |
|---|---|---|
org.atmosphere.kafka.bootstrap.servers |
localhost:9092 |
Kafka broker(s) |
org.atmosphere.kafka.topic.prefix |
atmosphere. |
Topic name prefix |
org.atmosphere.kafka.group.id |
auto-generated | Consumer 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.
| Class | Purpose |
|---|---|
KafkaBroadcaster |
Broadcaster that publishes/consumes via Kafka topics |
- Redis Clustering
- Core Runtime -- Broadcaster API