...
Note: The share groups are only suitable for connectors with idempotent, order-independent processing.
2. Scope
2.1 In Scope (What we are building)
New Task Type: Introducing WorkerShareSinkTask to handle Share Group logic without changing existing connector code.
Flexible Activation: Toggle queue semantics globally or per-connector via consumer.override.group.protocol=share.
Delivery Guarantees: * At-least-once: Standard support for all sink types.
Observability: New Share Group metrics (acquisition, release, and rejection rates) integrated into the existing sink-task-metrics group.
2.2 Out of Scope (Future/Separate efforts)
Source Connectors: Share Group support is currently for Sinks only (Source support and MirrorMaker 2 are excluded).
Cross-Cluster EOS: Exactly-once delivery between different Kafka clusters is not supported in this phase.
API Changes: No modifications will be made to the public SinkTask Java API or individual connector codebases.
Complex Transactions: External 2PC coordinators and cross-cluster transactional protocols are not addressed.
3. Public Interfaces
3.1 New Configuration Properties
...
Worker-
...
Level (
...
connect-distributed.
...
properties)
...
...
...
: Set to share to enable KafkaShareConsumer globally for all sink tasks (Default: consumer).
Connector-Level (Per
...
-connector JSON)
TypePer-connector override. | Default | Description |
consumer.override.group.protocol |
string | (inherited from worker) | single string<connector-name>The . Defaults to the same naming convention as consumer groups| ; follows standard naming conventions. |
share.acknowledgement.mode |
string worker calls acknowledge(ACCEPT) Acknowledge after task.put() |
succeeds acknowledgments are sent | Acknowledge on the next poll |
() (simpler, lower latency, weaker guarantee)intMaximum remains in ACQUIRED state before the broker releases it for | stays acquired before re-delivery. Must |
be greater than the expected exceed task.put() latency. |
share.delivery.semantics |
string | at-least-once | Toggle between at-least-once |
or . Exactly-once and a transactional producer| ). |
share.max.delivery.count |
intMaximum number of times a record can be delivered being sent the (if configured). Maps to Share Group's group.share.record.lock.partition.limit 3.2 New / Modified Java Interfaces
...