Expand description
Subscribe-style consumer client for Apache Kafka in Rust.
This crate builds on krabka-client-core for transport. It adds the classic
consumer-group lifecycle (JoinGroup → SyncGroup → Heartbeat →
Fetch → OffsetCommit → LeaveGroup) and a built-in heartbeat
task.
§Quick start
use krabka_client_consumer::{AutoOffsetReset, Consumer};
use krabka_units::millis;
let mut consumer = Consumer::builder()
.bootstrap("localhost:9092")
.group_id("my-group")
.client_id("my-app")
.auto_offset_reset(AutoOffsetReset::Earliest)
.subscribe(["my-topic".to_string()])
.build()
.await?;
loop {
let records = consumer.poll(millis(500)).await?;
for _r in records {
// ... handle r ...
}
consumer.commit_sync().await?;
}§Share-group consumption
use krabka_client_consumer::{ShareAckMode, ShareAckType, ShareConsumer};
use krabka_units::secs;
let mut consumer = ShareConsumer::builder()
.bootstrap("localhost:9092")
.group_id("share-workers")
.subscribe(["jobs".to_string()])
.ack_mode(ShareAckMode::Explicit)
.build()
.await?;
let records = consumer.poll(secs(1)).await?;
for record in &records {
consumer.acknowledge(record, ShareAckType::Accept)?;
}
consumer.commit().await?;§Capabilities and boundaries
This crate owns consumer-facing semantics: classic group membership,
assignment, fetch/poll, offset commit, cooperative shutdown, and KIP-932
share-group consumption. It does not duplicate admin-client surfaces such as
DescribeGroups/ListGroups. Manual partition fetches stay available
through the lower-level helpers in krabka-client-core. Transactional
consume-process-produce workflows use this crate’s
ConsumerGroupMetadata together with krabka-client-producer’s
send_offsets_to_transaction support.
§Cargo features
None for now.
Structs§
- Close
Options - How
Consumer::close_withcloses the consumer. Kafka’sCloseOptions(KIP-1092). - Consumer
- Subscribe-style consumer handle. Construct via
Consumer::builder. - Consumer
Fetch MaxBytes - Positive total response-byte budget for one classic consumer fetch.
- Consumer
Fetch Partition MaxBytes - Positive per-partition response-byte budget for one classic consumer fetch.
- Consumer
Group Metadata - The identity that a consumer presents to a transactional producer for KIP-447 offset-commit fencing.
- Consumer
Leave Group Timeout - Positive, whole-millisecond classic Consumer leave-group deadline.
- Consumer
Record - One record returned by
Consumer::poll. - Consumer
Retry Policy - Validated classic Consumer startup and coordinator retry timing.
- Consumer
Subscription Metadata Refresh Interval - Positive, whole-millisecond subscribed-topic metadata refresh cadence.
- Header
- A per-record header key/value pair, as the Kafka v2 record format defines it. The key is a UTF-8 string. The value is optional raw bytes.
- Node
- A broker of the cluster. Kafka’s
Node. - Offset
AndMetadata - The offset that a commit stores for one partition. Kafka’s
OffsetAndMetadata. - Offset
AndTimestamp - The offset of a timestamp search. Kafka’s
OffsetAndTimestamp. - Partition
Info - The metadata of one partition. Kafka’s
PartitionInfo. - Share
Consumer - A share-group consumer. Construct via
ShareConsumer::builder. - Share
Consumer Fetch MaxBytes - Validated maximum response bytes for a
ShareFetch. - Share
Consumer Fetch MaxRecords - Validated maximum records acquired by a
ShareFetch. - Share
Consumer Fetch MinBytes - Validated minimum response bytes for a
ShareFetch. - Share
Consumer Leave Heartbeat Timeout - Validated deadline for the final best-effort
ShareGroupleave heartbeat. - Share
Consumer Record - One record delivered by
ShareConsumer::poll. - Topic
Pattern - A topic pattern for
Consumer::subscribe_pattern. Kafka’ssubscribe(java.util.regex.Pattern). - Wakeup
Handle - A handle that wakes a
Consumer::pollfrom another task. Kafka’sKafkaConsumer.wakeup.
Enums§
- Assignor
- A built-in partition assignor, Kafka’s
partition.assignment.strategy. - Auto
Offset Reset - What to do when a partition has no committed offset. Kafka’s
auto.offset.reset. - Consumer
Error - Errors returned by
Consumer. - Group
Membership Operation - What a closing consumer does with its group membership. Kafka’s
CloseOptions.GroupMembershipOperation(KIP-1092). - Group
Protocol - The group protocol of a consumer. Kafka’s
group.protocol. - Isolation
Level - Controls which records are visible to this consumer.
- Share
AckMode - How acquired records are acknowledged.
- Share
AckType - The disposition of an acknowledged record, with the KIP-932 wire codes.
- Share
Acquire Mode - How a
ShareFetchapplies its maximum-record limit. - Timestamp
Type - The meaning of a record timestamp, as bit 3 of the v2 record batch attributes gives it.
Constants§
- DEFAULT_
CONSUMER_ CLOSE_ TIMEOUT - Kafka’s
ConsumerUtils.DEFAULT_CLOSE_TIMEOUT_MS. - DEFAULT_
CONSUMER_ DEFAULT_ API_ TIMEOUT - Kafka’s default
default.api.timeout.ms. - DEFAULT_
CONSUMER_ FETCH_ MAX_ WAIT - Kafka’s default
fetch.max.wait.ms. - DEFAULT_
CONSUMER_ LEAVE_ GROUP_ TIMEOUT - Default deadline for classic Consumer best-effort group departure.
- DEFAULT_
CONSUMER_ MAX_ POLL_ INTERVAL - Kafka’s default
max.poll.interval.ms. - DEFAULT_
CONSUMER_ MAX_ POLL_ RECORDS - Kafka’s default
max.poll.records. - DEFAULT_
CONSUMER_ METADATA_ MAX_ AGE - Kafka’s default
metadata.max.age.ms. - DEFAULT_
CONSUMER_ SUBSCRIPTION_ METADATA_ REFRESH_ INTERVAL - Default cadence for checking subscribed-topic metadata changes.
- DEFAULT_
SHARE_ CONSUMER_ FETCH_ MAX - Default maximum response size for a
ShareFetch. - DEFAULT_
SHARE_ CONSUMER_ FETCH_ MAX_ RECORDS - Default maximum records acquired by a
ShareFetch. - DEFAULT_
SHARE_ CONSUMER_ FETCH_ MIN - Default minimum response size for a
ShareFetch. - DEFAULT_
SHARE_ CONSUMER_ LEAVE_ HEARTBEAT_ TIMEOUT - Default deadline for the final best-effort
ShareGroupleave heartbeat.
Traits§
- Consumer
Rebalance Listener - Callbacks for the partitions that a rebalance takes from or gives to the
consumer. Kafka’s
ConsumerRebalanceListener.
Type Aliases§
- Offset
Commit Callback - The callback of an asynchronous commit. Kafka’s
OffsetCommitCallback. - Rebalance
Listener Error - The error that a listener callback returns.