GH-70: Support Batch Listeners

Resolves https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/70
This commit is contained in:
Gary Russell
2019-08-28 13:55:58 -04:00
committed by Soby Chacko
parent 584115580b
commit f2ab4a07c6
3 changed files with 72 additions and 3 deletions

View File

@@ -266,6 +266,17 @@ Ignored if `replicas-assignments` is present.
+
Default: none (the binder-wide default of 1 is used).
==== Consuming Batches
Starting with version 3.0, when `spring.cloud.stream.binding.<name>.consumer.batch-mode` is set to `true`, all of the records received by polling the Kafka `Consumer` will be presented as a `List<?>` to the listener method.
Otherwise, the method will be called with one record at a time.
The size of the batch is controlled by Kafka consumer properties `max.poll.records`, `min.fetch.bytes`, `fetch.max.wait.ms`; refer to the Kafka documentation for more information.
IMPORTANT: Retry within the binder is not supported when using batch mode, so `maxAttempts` will be overridden to 1.
You can configure a `SeekToCurrentBatchErrorHandler` (using a `ListenerContainerCustomizer`) to achieve similar functionality to retry in the binder.
You can also use a manual `AckMode` and call `Ackowledgment.nack(index, sleep)` to commit the offsets for a partial batch and have the remaining records redelivered.
Refer to the https://docs.spring.io/spring-kafka/docs/2.3.0.BUILD-SNAPSHOT/reference/html/#committing-offsets[Spring for Apache Kafka documentation] for more information about these techniques.
[[kafka-producer-properties]]
==== Kafka Producer Properties