【发布时间】:2018-05-23 14:02:28
【问题描述】:
我正在使用 Kafka 侦听器来接收消费者消息。我已启用手动确认。我已经使用 Acknowledgement.acknowledge() 方法来提交偏移量以防万一成功。由于某些API调用失败而导致异常的情况,我没有提交。
我有点困惑,因为除非我重新启动我的应用程序,否则未提交的消息不会再次被使用。我是 kafka 的新手,所以我确信我错过了一些非常基本的东西,但为此搜索是徒劳的。 有人可以解释或指出我可以知道这里有什么问题的正确来源吗?
@KafkaListener(topics = "temp_topic", groupId = "temp-consumer", containerFactory = "tempListenerContainerFactory")
public void receive(ConsumerRecord<?, ?> consumerRecord,
Acknowledgment acknowledgment) {
try {
log.info("Consuming message : {} ", consumerRecord.value().toString());
String message = consumerRecord.value().toString();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Payload payload = objectMapper.readValue(message,Payload.class);
tempService.processEvent(payload);
log.info("Message: {} successfully consumed",message);
acknowledgment.acknowledge();
} catch (Exception e) {
log.error("Error while listening to kafka event: ", e);
}
}
提前谢谢你。
【问题讨论】:
标签: java apache-kafka