Я хотел бы знать, как работает фиксация, когда AckMode
установлен на MANUAL
в spring kafka.
Ниже показано свойство, которое я установил в KafkaConfig
containerProperties.setAckMode (AbstractMessageListenerContainer.AckMode.MANUAL);
Код listener
@KafkaListener(id="POC", topics = "TestTopic", group = "TestGroup")
public void listen(ConsumerRecord<String,KafkaPayload> record, Acknowledgment acknowledgment) {
countDownLatch.countDown();
acknowledgment.acknowledge();
}
Я делаю acknowledgement
в соответствии с документацией spring kafka, но это будет означать только то, что мое сообщение помечено как отправлено, но не использовано (это я так понимаю).
В этом случае следует вызвать метод
commitSync()
. Если да, то откуда мне это вызывать, поскольку мне нужно получить ссылку наKafkaConsumer
. Если нет, как это работает внутри, могу ли я отследить это?Возвращается
commitId
или какое-то другое значение? Моя идея состоит в том, чтобы узнать, используется ли конкретная потребительская запись или нет. Я хочу сохранить значение для внутреннего отслеживания.- Поддерживает ли kafka внутренне какое-либо состояние в записи потребителя, например (Подтверждено, Выполнено, Не выполнено), которое может быть полезно для классификации.
Это действительно помогло бы мне различать, сколько записей потреблено, а сколько ожидает обработки и их состояния.