pub enum Request {
Show 35 variants
Authenticate {
username: String,
password: String,
},
SaslAuthenticate {
mechanism: Bytes,
auth_bytes: Bytes,
},
ScramClientFirst {
message: Bytes,
},
ScramClientFinal {
message: Bytes,
},
Publish {
topic: String,
partition: Option<u32>,
key: Option<Bytes>,
value: Bytes,
},
Consume {
topic: String,
partition: u32,
offset: u64,
max_messages: usize,
},
CreateTopic {
name: String,
partitions: Option<u32>,
},
ListTopics,
DeleteTopic {
name: String,
},
CommitOffset {
consumer_group: String,
topic: String,
partition: u32,
offset: u64,
},
GetOffset {
consumer_group: String,
topic: String,
partition: u32,
},
GetMetadata {
topic: String,
},
GetClusterMetadata {
topics: Vec<String>,
},
Ping,
RegisterSchema {
subject: String,
schema: String,
},
GetSchema {
id: i32,
},
GetOffsetBounds {
topic: String,
partition: u32,
},
ListGroups,
DescribeGroup {
consumer_group: String,
},
DeleteGroup {
consumer_group: String,
},
GetOffsetForTimestamp {
topic: String,
partition: u32,
timestamp_ms: i64,
},
InitProducerId {
producer_id: Option<u64>,
},
IdempotentPublish {
topic: String,
partition: Option<u32>,
key: Option<Bytes>,
value: Bytes,
producer_id: u64,
producer_epoch: u16,
sequence: i32,
},
BeginTransaction {
txn_id: String,
producer_id: u64,
producer_epoch: u16,
timeout_ms: Option<u64>,
},
AddPartitionsToTxn {
txn_id: String,
producer_id: u64,
producer_epoch: u16,
partitions: Vec<(String, u32)>,
},
TransactionalPublish {
txn_id: String,
topic: String,
partition: Option<u32>,
key: Option<Bytes>,
value: Bytes,
producer_id: u64,
producer_epoch: u16,
sequence: i32,
},
AddOffsetsToTxn {
txn_id: String,
producer_id: u64,
producer_epoch: u16,
group_id: String,
offsets: Vec<(String, u32, i64)>,
},
CommitTransaction {
txn_id: String,
producer_id: u64,
producer_epoch: u16,
},
AbortTransaction {
txn_id: String,
producer_id: u64,
producer_epoch: u16,
},
DescribeQuotas {
entities: Vec<(String, Option<String>)>,
},
AlterQuotas {
alterations: Vec<QuotaAlteration>,
},
AlterTopicConfig {
topic: String,
configs: Vec<TopicConfigEntry>,
},
CreatePartitions {
topic: String,
new_partition_count: u32,
assignments: Vec<Vec<String>>,
},
DeleteRecords {
topic: String,
partition_offsets: Vec<(u32, u64)>,
},
DescribeTopicConfigs {
topics: Vec<String>,
},
}Expand description
Protocol request messages
§Stability
WARNING: Variant order must remain stable for postcard serialization compatibility. Adding new variants should only be done at the end of the enum.
Variants§
Authenticate
Authenticate with username/password (SASL/PLAIN compatible)
SaslAuthenticate
Authenticate with SASL bytes (for Kafka client compatibility)
ScramClientFirst
SCRAM-SHA-256: Client-first message
ScramClientFinal
SCRAM-SHA-256: Client-final message
Publish
Publish a message to a topic
Consume
Consume messages from a topic
CreateTopic
Create a new topic
ListTopics
List all topics
DeleteTopic
Delete a topic
CommitOffset
Commit consumer offset
GetOffset
Get consumer offset
GetMetadata
Get topic metadata
GetClusterMetadata
Get cluster metadata (all topics or specific ones)
Ping
Ping
RegisterSchema
Register a schema
GetSchema
Get a schema
GetOffsetBounds
Get offset bounds for a partition
ListGroups
List all consumer groups
DescribeGroup
Describe a consumer group (get all offsets)
DeleteGroup
Delete a consumer group
GetOffsetForTimestamp
Find offset for a timestamp
InitProducerId
Initialize idempotent producer (request producer ID and epoch)
Call this before sending idempotent produce requests. If reconnecting, provide the previous producer_id to bump epoch.
IdempotentPublish
Publish with idempotent semantics (exactly-once delivery)
Requires InitProducerId to have been called first.
Fields
BeginTransaction
Begin a new transaction
Fields
AddPartitionsToTxn
Add partitions to an active transaction
Fields
TransactionalPublish
Publish within a transaction (combines IdempotentPublish + transaction tracking)
Fields
AddOffsetsToTxn
Add consumer offsets to transaction (for exactly-once consume-transform-produce)
Fields
CommitTransaction
Commit a transaction
AbortTransaction
Abort a transaction
DescribeQuotas
Describe quotas for entities
Fields
AlterQuotas
Alter quotas for entities
Fields
alterations: Vec<QuotaAlteration>Quota alterations to apply Each item: (entity_type, entity_name, quota_key, quota_value) quota_key: “produce_bytes_rate”, “consume_bytes_rate”, “request_rate” quota_value: None to remove, Some(value) to set
AlterTopicConfig
Alter topic configuration
CreatePartitions
Create additional partitions for an existing topic
Fields
DeleteRecords
Delete records before a given offset (log truncation)
Fields
DescribeTopicConfigs
Describe topic configurations
Implementations§
Source§impl Request
impl Request
Sourcepub fn from_bytes(data: &[u8]) -> Result<Request, ProtocolError>
pub fn from_bytes(data: &[u8]) -> Result<Request, ProtocolError>
Deserialize request from bytes