Class KafkaThrottledLatestProcessedCommit
java.lang.Object
io.smallrye.reactive.messaging.kafka.commit.ContextHolder
io.smallrye.reactive.messaging.kafka.commit.KafkaThrottledLatestProcessedCommit
- All Implemented Interfaces:
KafkaCommitHandler
public class KafkaThrottledLatestProcessedCommit
extends ContextHolder
implements KafkaCommitHandler
Will keep track of received messages and commit to the next offset after the latest
ACKed message in sequence. Will commit periodically as defined by `auto.commit.interval.ms` (default: 5000)
This strategy mimics the behavior of the kafka consumer when `enable.auto.commit` is `true`.
The connector will be marked as unhealthy in the presence of any received record that has gone too long without being processed as defined by `throttled.unprocessed-record-max-age.ms` (default: 60000). If `throttled.unprocessed-record-max-age.ms` is set to less than or equal to 0 then will not perform any health check (this might lead to running out of memory).
This strategy guarantees at-least-once delivery even if the channel performs asynchronous processing.
To use set `commit-strategy` to `throttled`.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classNested classes/interfaces inherited from interface io.smallrye.reactive.messaging.kafka.commit.KafkaCommitHandler
KafkaCommitHandler.Strategy -
Field Summary
Fields inherited from class io.smallrye.reactive.messaging.kafka.commit.ContextHolder
context, vertx -
Method Summary
Modifier and TypeMethodDescription<K,V> io.smallrye.mutiny.Uni<Void> handle(IncomingKafkaRecord<K, V> record) A message has been acknowledged.voidpartitionsAssigned(Collection<org.apache.kafka.common.TopicPartition> partitions) New partitions are assigned.voidpartitionsRevoked(Collection<org.apache.kafka.common.TopicPartition> partitions) Revoked partitions.<K,V> io.smallrye.mutiny.Uni<IncomingKafkaRecord<K, V>> received(IncomingKafkaRecord<K, V> record) Received a new record from Kafka.voidterminate(boolean graceful) Called on channel shutdownMethods inherited from class io.smallrye.reactive.messaging.kafka.commit.ContextHolder
capture, capture, getContext, getTimeoutInMillis, runOnContext, runOnContextAndAwait
-
Method Details
-
partitionsAssigned
New partitions are assigned. This method is called from the Kafka poll thread.- Specified by:
partitionsAssignedin interfaceKafkaCommitHandler- Parameters:
partitions- the list of partitions that are now assigned to the consumer (may include partitions previously assigned to the consumer)
-
partitionsRevoked
Revoked partitions. This method is called from the Kafka pool thread.- Specified by:
partitionsRevokedin interfaceKafkaCommitHandler- Parameters:
partitions- The list of partitions that were assigned to the consumer and now need to be revoked (may not include all currently assigned partitions).
-
received
public <K,V> io.smallrye.mutiny.Uni<IncomingKafkaRecord<K,V>> received(IncomingKafkaRecord<K, V> record) Received a new record from Kafka. This method is called from a Vert.x event loop.- Specified by:
receivedin interfaceKafkaCommitHandler- Type Parameters:
K- the keyV- the value- Parameters:
record- the record- Returns:
- the record emitted once everything has been done
-
handle
A message has been acknowledged. This method is NOT necessarily called on an event loop.- Specified by:
handlein interfaceKafkaCommitHandler- Type Parameters:
K- the keyV- the value- Parameters:
record- the record- Returns:
- a completion stage indicating when the commit complete
-
terminate
public void terminate(boolean graceful) Description copied from interface:KafkaCommitHandlerCalled on channel shutdown- Specified by:
terminatein interfaceKafkaCommitHandler- Parameters:
graceful-trueif it is a graceful shutdown
-