#spring-boot #apache-kafka #kafka-consumer-api #apache-kafka-streams #spring-cloud-stream
#весенняя загрузка #apache-kafka #kafka-consumer-api #apache-kafka-streams #spring-cloud-stream
Вопрос:
Я использую spring-cloud-starter-stream-kafka — 1.3.3 и spring-cloud-stream с Spring Boot для подключения к Kafka, которые включают типичный вариант использования подписчика Publisher, в котором я хочу, чтобы значение enable.auto.commit было истинным.
Когда служба запускается, я вижу, что на консоли печатается несколько свойств Kafka (ИНФОРМАЦИОННЫЕ журналы), в которых перечислены все примененные свойства. Я вижу значение этого свойства как false- enable.auto.commit = false, как показано ниже:
auto.commit.interval.ms = 100
enable.auto.commit = false
auto.offset.reset = earliest
check.crcs = true
client.id = consumer-2
connections.max.idle.ms = 540000
exclude.internal.topics = true
fetch.max.bytes = 52428800
fetch.max.wait.ms = 500
fetch.min.bytes = 1
group.id = conn-dr-group
heartbeat.interval.ms = 3000
Я читал в Spring Doc, что если мы не предоставляем свойство автоматической фиксации, по умолчанию для него установлено значение true —
Однако при загрузке службы значение по-прежнему отображается как false.
Я попытался предоставить следующее свойство в application.properties, но все равно оно принимает значение false.
spring.cloud.stream.kafka.bindings.input.autoCommitOffset= true
Кто-нибудь знает, как мы можем получить значение true?
Ответ №1:
spring.cloud.stream.kafka.bindings.input.autoCommitOffset= true
Это другое свойство; оно сообщает связующему зафиксировать смещение после нормального возврата прослушивателя. Это более детерминировано, чем заставить клиента выполнять коммиты самостоятельно.
Связующее всегда сбрасывается enable.auto.commit
; вы можете переопределить это с помощью ...binder.configuration
свойства, но это не рекомендуется.
Комментарии:
1. Спасибо, теперь я мог переопределить свойство как — spring.cloud.stream.kafka.bindings.input.configuration.autoCommitOffset= true.
2. Не могли бы вы, пожалуйста, рассказать мне, почему не рекомендуется переопределять это свойство, пожалуйста?
3.
>If true the consumer's offset will be periodically committed in the background.
IMO, лучше зафиксировать смещение более детерминированным способом — после успешной обработки записи.