当前位置: 首页 > 知识库问答 >
问题:

什么是出版商返回SpringAMQP

南门峰
2023-03-14

我一直在尝试SpringAMQP。我有几个问题:

我想知道什么是Publisher退货,它与Publisher确认有什么不同。据我所知,我们有一个Publisher Confirm回调,用于检查ACK的状态。现在我看了Spring AMQP和Rabbit MQ中的文档。在这件事上我真的没有发现或理解太多。

还有为什么如果消息试图发送到一个不存在的队列,我不会得到任何类型的确认(ack/nack),也不会得到任何错误。有没有办法设置非确认的超时?

共有2个答案

林魁
2023-03-14

我建议你读这篇文章。对所有可能的确认场景都有很好的描述,包括未路由消息的返回,比如不存在的队列。

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

此功能需要一个CachingConnectionFactory,它的publisherReturns属性设置为true

高嘉熙
2023-03-14

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

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

在Spring AMQP中,如果设置“Spring”。兔子。publisherReturns'为true这意味着由于以下代码,消息将是“强制的”(除非将“强制”设置为false):

    private boolean determineMandatoryFlag() {
        Boolean mandatory = this.properties.getTemplate().getMandatory();
        return (mandatory != null ? mandatory : this.properties.isPublisherReturns());
    }
 类似资料:
  • 问题内容: 据我所知,使用或实例化对象分别返回或的新实例。具有 新标识 的新实例对象。 在我实际测试它之前,这对我来说是很清楚的,我注意到它实际上返回了而不是预期的: 如预期的那样,分别使用和创建对象时,也会表现出这种行为: 我可以在状态文档中找到唯一相关的信息: […]例如,return和return 。 如果未提供任何参数,则构造函数将创建一个新的空元组。 可以说,这不足以回答我的问题。 那么

  • 本文向大家介绍Math.min() < Math.max() 返回结果是什么?为什么?相关面试题,主要包含被问及Math.min() < Math.max() 返回结果是什么?为什么?时的应答技巧和注意事项,需要的朋友参考一下 返回,因为返回,返回。 猜测的实现方式大致如下: 接受不定项参数,当参数只有一个的时候,例如,那么这个需要和(js中最小的数)进行比较,所以结果返回,哪怕传入的值再小,单个

  • 我们在windows 10机器上从Tomcat 9.0.29升级到9.0.44,并收到503条错误消息。Tomcat托管Java应用程序。对Tomcat服务器的请求作为工作线程从单独的Apache代理服务器通过端口8010发送。我可以看到Tomcat服务正在运行,Java应用程序正在启动并运行。这可以从Tomcat服务器上的//localhost:8080/{JavaApp}进行验证。 但是,来自

  • 问题内容: 我有以下代码。应该返回表的最后一行的mysqli_insert_id()(在本例中为“ $ last_row”)始终返回0。为什么会这样呢? 问题答案: 并 没有 返回表的最后一排的ID。从文档中,它: …返回由查询产生的ID,该查询是对具有具有AUTO_INCREMENT属性的列的表进行的。如果最后一个查询不是or 语句,或者如果修改后的表没有带有属性的列,则此函数 将返回零 。 (

  • 问题内容: 我找到了JavaDoc的方法: 返回:如果此线程已被中断,则返回true;否则返回false。 否则为假。 我对这种方法的理解有误。此外,我可能会误解Thread中的“中断”概念。 欢迎任何解释!谢谢! 程式码片段: 在线程定义中: 调用: 问题答案: 引发异常后,线程不再处于中断状态。

  • 问题内容: 一个在Management Studio中工作并返回相同结果的查询,在我们可以找到的任何文档中都未定义。它应该只返回rowcount或。这是什么意思?如果重要的话,驱动程序是JDBC- ODBC桥。 例: 该查询有效,因为该行已添加到数据库中,但是奇怪的是它返回-1,而文档说它只会返回0或行数(如我所纠正)。 更新: 在Management Studio中运行此命令将显示“命令已成功完