我正在使用春季云流kafka。如果我在消费者中不认可该消息,我希望得到同样的消息。
我的配置如下,
spring.cloud.stream.kafka.default-binder=kafka
spring.cloud.stream.kafka.binder.brokers=localhost:9092
spring.cloud.stream.bindings.input_channel.destination=MyTopic
spring.cloud.stream.kafka.bindings.input_channel.consumer.resetOffset=true
spring.cloud.stream.kafka.bindings.input_channel.consumer.autoCommitOffset=false
spring.cloud.stream.kafka.bindings.input_channel.consumer.startOffset=latest
spring.cloud.stream.bindings.input_channel.content-type=text/plain
spring.cloud.stream.bindings.input_channel.group=dev
我的消费者代码如下
Acknowledgment acknowledgment = message.getHeaders()
.get(KafkaHeaders.ACKNOWLEDGMENT, Acknowledgment.class);
try {
MessageData data = MessageData.builder()
.content(message.getPayload().toString())
.build();
messageDataService.save(data); //Can throw an exception if the service database is having a connection issue etc....
if (acknowledgment != null) {
log.info("Acknowledgement has been done");
acknowledgment.acknowledge();
}
} catch (Exception e) {
/*I don't want to acknowledge here as I'm expecting to receive the same message again because my message Service sub system may be recover after some time*/
}
任何人都可以回答这个问题。我的代码或配置中有任何问题吗?
谢谢!