Skip to content

Kafka streaming

Every committed transaction in EvidentSource is available as a Kafka record. You can consume this stream with any standard Kafka client.

Milena, EvidentSource’s Kafka-compatible broker, is built in and backed by SlateDB. It exposes:

  • Sandbox Milena endpoint: kafkas://sandbox.evidentsource.com:9093
  • Your deployment: typically port 9092 or 9093 behind your ALB

If you’re bridging to an external Kafka (MSK, Confluent), configure the bridge container — see Kafka prerequisites.

  • Per-database topic: evidentsource.<database>.events
  • Keyed by <stream>:<subject>
  • Values are CloudEvents JSON (default) or Avro/Protobuf (configurable)

Use any Kafka client library. Bootstrap servers = the Milena or bridged endpoint. No special configuration beyond standard TLS/SASL for your environment.

from kafka import KafkaConsumer
consumer = KafkaConsumer(
"evidentsource.todomvc.events",
bootstrap_servers="sandbox.evidentsource.com:9093",
security_protocol="SSL",
)
for msg in consumer:
print(msg.key, msg.value)

EvidentSource commits transactions atomically to both the event store and the Milena log; Kafka consumers see exactly the events that were committed, in commit order.

Use Kafka whenUse gRPC SubscribeEvents when
Existing Kafka tooling / stream processorsLanguage has a good gRPC client
Long-lived pipelinesShort-lived consumers or browser clients
Integration with Kafka Connect / StreamsFiltering by stream / subject / type