首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在重新发布到dlq后确认或拒绝邮件

如何在重新发布到dlq后确认或拒绝邮件
EN

Stack Overflow用户
提问于 2020-01-17 18:01:19
回答 1查看 190关注 0票数 0

当消费者在消息处理期间并且在手动ack工作之前抛出异常republishToDlq时,但是原始队列消息总是处于nack状态。

环境

Spring Boot2.1.11.RELEASE

Spring CloudGreenwich.SR4

Spring Cloud StreamFishtown.SR4

spring-cloud-stream-binder-rabbit2.1.4.RELEASE

Yaml配置

代码语言:javascript
复制
spring:
  cloud:
    stream:
      bindings:
        input:
          binder: rabbit
          group: ${spring.application.name}_input
          content-type: application/json
          destination: push_message
      rabbit:
        bindings:
          input:
            consumer:
              acknowledge-mode: MANUAL
              exchange-type: topic
              consumer-tag-prefix: ${spring.application.name}_input
              binding-routing-key:  ${spring.application.name}_input
              autoBindDlq: true
              republishToDlq: true

结果

Rabbitmq Management Result

期望

在republishToDlq之后,Nack或拒绝原始队列消息。

我对上面的理解正确吗?如果没有,请纠正我。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 19:02:03

从Spring AMQP的角度来看,使用手动ack模式意味着“应用程序”完全负责ack消息。

同样,从Spring AMQP的角度来看,republishToDlq被认为是一个“成功的”交付。

第一个问题是“你使用手册的用例是什么”?它很少被使用,而且经常被错误地使用。

也就是说,我可以看到一个论点,从Spring AMQP的角度来看,绑定器是应用程序的一部分,我们应该考虑在将消息发布到绑定器中的DLQ之后(当ack模式是手动的时候)。

请根据活页夹打开GitHub新功能问题,我们将进行查看。

同时,解决办法是在侦听器中捕获异常,并在重新抛出异常之前确认(而不是nack)消息。

但是,您应该考虑是否真的需要手动确认。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59785081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档