Add share-groups module: Kafka 4.3.1 share groups with Spring for Apache Kafka 4.1.1
Six consumers on two partitions under a consumer group, a share group with the default share.acquire.mode and a share group with record_limit; the three acknowledgement types and a record that is released until Kafka stops redelivering it; a new share group starting at latest; the ordering a share group gives up; and Spring Kafka's share containers in implicit and manual acknowledgement modes. Tests run against a real broker (scripts/broker-up.sh) and write output/. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Lm655hdgDo5xsSLNomgdsy
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
topic partitions = 2, consumers = 6, records = 60, work per record = 50 ms
|
||||
== consumer group (6 KafkaConsumers, same group.id)
|
||||
consumer-0 processed 26 records
|
||||
consumer-1 processed 34 records
|
||||
consumer-2 processed 0 records
|
||||
consumer-3 processed 0 records
|
||||
consumer-4 processed 0 records
|
||||
consumer-5 processed 0 records
|
||||
total processed = 60 in 1993 ms
|
||||
== share group (6 ShareConsumers, default share.acquire.mode)
|
||||
consumer-0 processed 26 records
|
||||
consumer-1 processed 34 records
|
||||
consumer-2 processed 0 records
|
||||
consumer-3 processed 0 records
|
||||
consumer-4 processed 0 records
|
||||
consumer-5 processed 0 records
|
||||
total processed = 60 in 1778 ms
|
||||
== share group (6 ShareConsumers, share.acquire.mode=record_limit)
|
||||
consumer-0 processed 9 records
|
||||
consumer-1 processed 12 records
|
||||
consumer-2 processed 10 records
|
||||
consumer-3 processed 8 records
|
||||
consumer-4 processed 9 records
|
||||
consumer-5 processed 12 records
|
||||
total processed = 60 in 681 ms
|
||||
consumer group : consumers that received records = 2
|
||||
share group, default share.acquire.mode: consumers that received records = 2
|
||||
share group, acquire.mode=record_limit : consumers that received records = 6
|
||||
(elapsed times vary from run to run; the shape, not the milliseconds, is the result)
|
||||
@@ -0,0 +1,13 @@
|
||||
ok delivery #1 -> accept
|
||||
retry-once delivery #1 -> release
|
||||
reject-me delivery #1 -> reject
|
||||
always-release delivery #1 -> release
|
||||
retry-once delivery #2 -> accept
|
||||
always-release delivery #2 -> release
|
||||
always-release delivery #3 -> release
|
||||
always-release delivery #4 -> release
|
||||
always-release delivery #5 -> release
|
||||
deliveries of ok = 1
|
||||
deliveries of retry-once = 2
|
||||
deliveries of reject-me = 1
|
||||
deliveries of always-release = 5
|
||||
@@ -0,0 +1,3 @@
|
||||
produced 3 records before any group existed
|
||||
new group, default share.auto.offset.reset -> received 0 records
|
||||
new group, share.auto.offset.reset=earliest -> received 3 records
|
||||
@@ -0,0 +1,3 @@
|
||||
produced : 0..39 in order, one key, one partition
|
||||
processed : [4, 5, 6, 7, 12, 0, 13, 14, 15, 16, 17, 18, 19, 1, 20, 8, 21, 22, 23, 24, 2, 25, 26, 27, 28, 29, 30, 3, 31, 36, 9, 37, 38, 39, 32, 33, 10, 34, 35, 11]
|
||||
adjacent pairs that arrived out of order = 9
|
||||
@@ -0,0 +1,10 @@
|
||||
== implicit mode, concurrency 4, 24 records on one topic partition
|
||||
records handled = 24
|
||||
distinct listener threads that handled records = 2
|
||||
implicit-C-1
|
||||
implicit-C-2
|
||||
== manual mode (ShareAckMode.MANUAL), listener takes a ShareAcknowledgment
|
||||
again delivery #1 -> release
|
||||
again delivery #2 -> acknowledge
|
||||
bad delivery #1 -> reject
|
||||
ok delivery #1 -> acknowledge
|
||||
Reference in New Issue
Block a user