如果我不使用Spring Cloud Stream Kafka进行确认,则不会重新发送邮件

时间:2019-12-28 04:43:48

标签: spring-cloud-stream-binder-kafka

我正在使用春季云流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*/
}

任何人都可以回答这个问题。我的代码或配置中有任何问题吗?

谢谢!

0 个答案:

没有答案