Смещение потребителя Camel Kafka зафиксировано в onPartitionRevoked (), даже если allowManualCommit = true, autoCommitEnable = false - PullRequest
0 голосов
/ 18 июня 2020

У нас есть приложение camel, которое читает сообщение от kafka с помощью компонента Camel kafka (версия 3.3). Наша конечная точка потребления Kafka имеет следующие свойства:

  • allowManualCommit = true
  • autoCommitEnable = false
  • autoCommitOnStop = none
  • мы не используем локальный государственный репозиторий для управления смещением, поскольку мы хотим использовать стандартное управление смещением kafka

Когда наше приложение завершается и мы закрываем контекст Camel, мы видим в трассировке стека, что метод onPartitionRevoked () класса org. apache .camel.component.kafka.KafkaConsumer. В этом методе comitOffset вызывается с опцией forceCommit = true (см. https://github.com/apache/camel/blob/7f96e2e248cc52a8d3c5899e50bbfe71427c69d4/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConsumer.java#L463)

В методе commitOffset () свойство allowManualCommit проверяется только тогда, когда локальный репозиторий смещения настроен на выполнение фиксации смещения или нет. Если локальный репозиторий смещения не настроен, свойство allowManualCommit не проверяется и вместо этого принудительно выполняется commitSyn c (см. https://github.com/apache/camel/blob/7f96e2e248cc52a8d3c5899e50bbfe71427c69d4/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaConsumer.java#L435)

Почему это различие и почему commitSyn c принудительно, когда мы не используем локальный репозиторий смещения, и мы хотим использовать ручную фиксацию и отключили функцию автоматической фиксации?

...