什么是Spring AMQP中的发布者返回

时间:2018-05-22 05:12:40

标签: spring rabbitmq amqp spring-amqp spring-rabbit

我一直在尝试使用Spring AMQP。我有几个问题:

我想知道Publisher返回的内容以及它与Publisher Confirm的不同之处。根据我的理解,我们有一个发布者确认回调,用于检查确认状态。现在我查看了Spring AMQP和Rabbit MQ中的文档。没有真正发现或理解这一点。

为什么如果尝试将邮件发送到不存在的队列,我也不会得到任何形式的确认(ack / nack) 我也没有任何错误。有没有办法为非确认设置timeTime?

2 个答案:

答案 0 :(得分:0)

我建议你阅读this文章。可以很好地描述所有可能的确认方案,包括返回,用于未路由的消息,例如您不存在的队列。

从Spring AMQP的角度来看,你应该记住:https://docs.spring.io/spring-amqp/docs/2.0.3.RELEASE/reference/html/_reference.html#template-confirms

  

此功能需要将CachingConnectionFactory属性设置为publisherReturns的{​​{1}}。

答案 1 :(得分:0)

链接https://www.rabbitmq.com/confirms.html的简短回答:

"对于不可路由的消息,一旦交换机验证了一条消息不会路由到任何队列(返回一个空的队列列表),代理就会发出确认。如果消息也作为必需消息发布,则basic.return将在basic.ack之前发送给客户端。"

在Spring AMQP中,如果你设置了spring.rabbitmq.publisherReturns'如果这是真的,这将意味着消息将是强制性的' (因为以下代码,除非您将强制设置为false):

    private boolean determineMandatoryFlag() {
        Boolean mandatory = this.properties.getTemplate().getMandatory();
        return (mandatory != null ? mandatory : this.properties.isPublisherReturns());
    }