Expand description
Apache Kafka broker for the RustStream messaging
framework, backed by rdkafka / librdkafka.
§Transport model
A subscription is one consumer joining one consumer group on one topic; KafkaTopic
describes it, and the bare-string #[subscriber("orders")] form consumes the topic named
orders through KafkaBroker::default_group. On the publish side
OutgoingMessage::name is the destination topic, and a
PARTITION_KEY_HEADER header becomes the record’s native key, so Kafka itself keeps
per-key ordering.
Settlement follows Kafka’s committed-position model instead of per-message frames; the
Commit mode picks how:
Commit::Auto(the default): librdkafka auto-commit;ackand bothnackforms are advisory no-ops (the position is stored when a message is handed to the application, sonack(true)does not cause a redelivery).Commit::Tracked: precise at-least-once.acksettles its delivery and the stored position advances across everything settled below it, staying correct under concurrent handler lanes and across offset gaps (transaction markers, compacted topics).nack(false)settles the offset (drop);nack(true)leaves it unsettled, so Kafka redelivers from the committed position on the next fetch of the partition.
Configuration delegates to librdkafka: unset options mean librdkafka defaults, and the raw
config(key, value) passthroughs on the broker, the producer, and the descriptor reach
every property this crate does not surface as a typed option.
§Lazy startup
KafkaBroker::new is synchronous and I/O-free, so a service composes with the synchronous
#[ruststream::app] builder; the real network work happens in the idempotent async
Broker::connect, called once by the runtime at startup. Publishers handed out before that
resolve the shared connection on first use.
Modules§
- context
- Per-delivery context fields exposed to handlers.
- testing
- In-process test broker, behind the
testingfeature.
Structs§
- Kafka
Broker - An Apache Kafka broker backed by
rdkafka/ librdkafka. - Kafka
Message - One Kafka delivery: an owned snapshot of the record plus its settlement handle.
- Kafka
Publisher - A producer handle sharing the broker’s connection.
- Kafka
Subscriber - A consumer-group member on one topic, yielding
KafkaMessagedeliveries. - Kafka
Topic - A subscription to one Kafka topic through one consumer group.
Enums§
- Commit
- How processed deliveries are committed back to the consumer group.
- Kafka
Error - Errors returned by
KafkaBrokerand the types it hands out. - Start
Offset - Where a consumer group starts reading when it has no valid committed offset.
Constants§
- PARTITION_
KEY_ HEADER - Header carrying a message’s partition key, mapped onto Kafka’s native record key.