KubeMQ
ConnectorsKafkaReference

Capabilities

What the KubeMQ Kafka connector supports — every implemented Kafka API, from Produce/Fetch and consumer groups to transactions and share groups (preview).

This reference lists every Kafka API key the KubeMQ Kafka connector advertises, the version range it accepts, and how complete that support is. ✅ Full means "point a stock Kafka client at KubeMQ; it works." 🟡 Partial states the exact scope — read it before relying on the capability. 🔵 Preview means the wire protocol is implemented and advertised, but the multi-client conformance matrix hasn't run yet — it is not a GA guarantee.

Every key's advertised [min, max] version window comes from one source table inside the connector that both the ApiVersions(18) response and the per-request bounds check read, so the two can never drift apart. A request whose version falls outside a key's window is answered UNSUPPORTED_VERSION, encoded at that key's max version, so the client renegotiates instead of decoding garbage.

Produce, fetch, and metadata

KeyAPIVersionsStatusNotes
0Produce3–9✅ FullRecordBatch v2 only; acks 0/1/all; strict per-partition ordering
1Fetch4–12✅ FullLong-poll (fetch.max.wait.ms); serves RecordBatch v2
2ListOffsets1–7✅ Fullearliest/latest/by-timestamp; earliest tracks the live retention floor
3Metadata0–13✅ Fullv13 carries a deterministic TopicID (KIP-516); Fetch deliberately stays name-based (v12), not UUID-keyed
23OffsetForLeaderEpoch0–4✅ FullReal KIP-320 leader-epoch fencing for log-truncation detection on consumer resume

Consumer groups (classic protocol)

KeyAPIVersionsStatusNotes
10FindCoordinator0–3✅ Fullscalar SELF shape only
11JoinGroup0–5✅ Fullincludes the static-membership InstanceID field (v5+)
14SyncGroup0–3✅ Full
12Heartbeat0–4✅ Full
13LeaveGroup0–4✅ Fullsingle- and batch-member leave shapes
15DescribeGroups0–5✅ Fullauthz-gated; a denied group never leaks membership
16ListGroups0–4✅ Full
42DeleteGroups0–2✅ Full
8OffsetCommit0–8✅ Fulldurable, per-group, leader-linearized
9OffsetFetch2–7✅ Full
47OffsetDelete0–0✅ Full

Static membership (KIP-345) is Full. A consumer that sets group.instance.id joins as a static member: a static rejoin within the session timeout skips a rebalance entirely, and a second connection presenting the same instance.id — a displaced or duplicate instance — is fenced with FENCED_INSTANCE_ID(82) across Join/Sync/Heartbeat/OffsetCommit/Leave.

There is no separate API key for KIP-848's next-generation consumer-group protocol — see Not supported.

Handshake and authentication

KeyAPIVersionsStatusNotes
18ApiVersions0–3✅ FullA request above v3 is answered at v0 with UNSUPPORTED_VERSION (KIP-511)
17SASLHandshake0–1✅ Fullnegotiates PLAIN vs. the modern separate-authenticate flow
36SASLAuthenticate0–2✅ Fullcarries PLAIN, SCRAM-SHA-256/512, and OAUTHBEARER (TLS listener only)

Admin

KeyAPIVersionsStatusNotes
19CreateTopics0–7✅ Fullauto-create on Metadata/Produce also applies
20DeleteTopics0–6✅ Full
37CreatePartitions0–3🟡 Partialincrease-only — same-count, decrease, or over the 256-partition cap all reject INVALID_PARTITIONS
21DeleteRecords0–2🟡 Partiallow-end log truncation only (advances the log start; never renumbers offsets)
32DescribeConfigs0–4✅ Fullleader-authoritative overlay read
44IncrementalAlterConfigs0–1🟡 Partialrecognizes a subset of configs; several are accepted but no-op
60DescribeCluster0–2✅ Fullself-as-broker-and-controller
75DescribeTopicPartitions0–0🟡 Partialoptional API; tooling can safely fall back to Metadata

Transactions and exactly-once semantics

KeyAPIVersionsStatusNotes
22InitProducerId0–4✅ Fullidempotent-producer PID allocation and KIP-360 epoch bump
24AddPartitionsToTxn0–3🟡 PartialV1 flat, non-batched wire shape only
25AddOffsetsToTxn0–3🟡 Partial
26EndTxn0–4🟡 Partialwrites a real in-log COMMIT/ABORT marker; no per-EndTxn epoch bump
28TxnOffsetCommit0–3🟡 Partialsingle-group shape only

Transactions are exactly-once at the V1 wire scope: (PID, epoch) fencing, read_committed isolation, and staged-offset materialization on commit all work like real Kafka's coordinator. KIP-890 transaction protocol V2 is not shipped — there is no per-EndTxn epoch bump — and WriteTxnMarkers(27), the broker-internal marker RPC, is never advertised to clients (see Not supported).

Access control (ACLs)

ACL enforcement is Full, independent of the three management keys below — every Produce/Fetch/group dispatch is authorization-gated at the first hop. The management keys only reflect configuration; they don't drive enforcement. Write is coarse-grained, though — a topic's Write permission authorizes both produce and destructive admin operations on that topic; there is no separate admin-only permission tier. This is a documented limitation, not a roadmap gap.

KeyAPIVersionsStatusNotes
29DescribeACLs0–3🟡 Partialreturns an honest empty view (or SECURITY_DISABLED) — no fabricated bindings
30CreateACLs0–3🟡 Partial
31DeleteACLs0–3🟡 Partial

Quotas and SCRAM credential admin

KeyAPIVersionsStatusNotes
48DescribeClientQuotas0–1🟡 Partialper-principal produce/fetch token-bucket baseline; full multi-tenant quotas are a later continuation
49AlterClientQuotas0–1🟡 Partial
50DescribeUserScramCredentials0–0🟡 Partialreflects configured users' mechanisms and iteration counts from server config (never salt or keys)
51AlterUserScramCredentials0–0🟡 Partialhonestly rejects every mutation with SECURITY_DISABLED — SCRAM credentials are config-managed, not runtime-mutable

Share groups (KIP-932) — preview

Preview, not GA. Share groups are implemented and advertised — acquire, Accept/Release/Reject acknowledgements, multi-record batches, and follower-to-leader forwarding are all wired and validated against a real franz-go share consumer. The full multi-client share-group conformance matrix — the share-group analogue of the transactions exit gate — has not run yet. Never read this as "fully supported." See Share Groups for what to expect today.

KeyAPIVersionsStatusNotes
76ShareGroupHeartbeat0–1🔵 Previewjoin/leave for a share-group member
78ShareFetch1–1🔵 Previewacquire; advertised atomically with 76/79 — a client needs all three
79ShareAcknowledge1–1🔵 Previewstandalone acknowledge outside a ShareFetch round-trip
77ShareGroupDescribe0–1🔵 Previewread-only member roster and group state
90DescribeShareGroupOffsets0–1🔵 Previewread-only per-partition start offset and lag
91AlterShareGroupOffsets0–0🔵 Previewresets an empty group's start offset
92DeleteShareGroupOffsets0–0🔵 Previewresets an empty group's start offset to the log start

The data-plane trio (76/78/79) is advertised as a unit — a franz-go share consumer needs all three to make any progress. kcat, confluent-kafka, kafkajs, Confluent.Kafka, and rdkafka (Ruby and Rust) have no share-consumer API today; only franz-go (Go) and Java's preview KafkaShareConsumer can drive this surface.

Not supported

  • KIP-848 next-generation consumer groups (ConsumerGroupHeartbeat/ConsumerGroupDescribe, keys 68/69) — never advertised; classic groups (group.protocol=classic) are the only supported path. A client that requests group.protocol=consumer fails client-side before sending a single heartbeat — there is no server-side fallback.
  • KIP-714 client telemetry (GetTelemetrySubscriptions, key 71) — never advertised; clients simply run without broker-side telemetry collection.
  • WriteTxnMarkers (key 27) — broker-internal only; real Kafka clients never call it directly, and this connector never advertises it.
  • Schema Registry server — the hosted REST API and its _schemas-backed storage aren't embedded. The wire-level magic-byte prefix passes through untouched, so Schema-Registry-aware serializers work unchanged. The real, external Confluent Schema Registry service does run against KubeMQ, though — its _schemas topic is just a compacted topic on the next engine like any other; only the embedded/hosted SR REST API isn't built in. See the Fitness Matrix for the proof tier.
  • ksqlDB — a separate stream-processing runtime; out of scope as an embedded engine.
  • MirrorMaker 2 — cross-cluster mirroring isn't offered as a hosted tool; migration is start-fresh (see Migrate from Kafka).
  • Kerberos / GSSAPI SASL — no KDC integration; use SASL/SCRAM, SASL/PLAIN, OAUTHBEARER, or mTLS instead.
  • Delegation tokensCreateDelegationToken/RenewDelegationToken/ExpireDelegationToken/ DescribeDelegationToken (keys 38–41) aren't implemented; any delegation-token request is answered DELEGATION_TOKEN_AUTH_DISABLED(61) — switch those principals to SASL/SCRAM or mTLS instead.

Was this page helpful?

On this page