程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AMQP 忽略 ActiveMQ 5 重新传递策略大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决AMQP 忽略 ActiveMQ 5 重新传递策略?

开发过程中遇到AMQP 忽略 ActiveMQ 5 重新传递策略的问题如何解决?下面主要结合日常开发的经验,给出你关于AMQP 忽略 ActiveMQ 5 重新传递策略的解决方法建议,希望对你解决AMQP 忽略 ActiveMQ 5 重新传递策略有所启发或帮助;

我有一个 Spring Boot 应用程序,它使用 QpID JMS 与 ActiveMQ 5.15.14 代理对话 AMQP。即使配置了重新交付插件,代理的重新交付策略也会被忽略。但是,客户端 (QpID) 的重新交付策略确实起作用了。

当完全相同的代码和客户端配置连接到 ActiveMQ Artemis 代理时,代理的重新交付策略就会启动,这正是我正在寻找的。​​p>

您是否知道可以解释 ActiveMQ 5 和 ActiveMQ Artemis 之间的这种不同行为?除了重新交付策略之外,两个代理都使用了几乎所有的 OOTB 配置,并且在我的 ActiveMQ 5 代理中也启用了 schedulerSupport。以下是 activemq.xml 中重新传送配置的样子:

<redeliveryPlugin fallBACkToDeadLetter="true" sendToDlqIfMaxRetrIEsExceeded="true">
   <redeliveryPolicymap>
      <redeliveryPolicymap>
         <defaultEntry>
            <redeliveryPolicy initialRedeliveryDelay="5000" maximumRedeliverIEs="9" redeliveryDelay="60000" /> 
         </defaultEntry>
      </redeliveryPolicymap>
   </redeliveryPolicymap>
</redeliveryPlugin>

需要虑的另一件事:当我使用 Openwire (JMS) 而不是 AMQP 时,会应用 ActiveMQ 5 代理的重新交付策略。

解决方法

ActiveMQ 5.x 中的 AMQP 协议头比 Artemis 代理实现的要原始得多,并且可能无法对从 AMQP 客户端发回的处置做出正确反应。此外,5.x 代理可以根据代理上“transportConnector”中的转换器设置做出不同的反应,该转换器可以是 JMSNATIVERAW。 JMS 转换器将提供与 ActiveMQ 最兼容的行为,但需要在内部完全转换为 OpenWire 消息,然后在从 AMQP 发送方到 AMQP 接收方时返回 AMQP,这会严重影响性能。 NATIVE 转换将尝试保留对消息重新传递状态的一些见解,但不会最有可能捕获所有情况。在 RAW 模式下,根本无法了解消息传递计数,因此您绝对不会在代理端进行任何重新传递处理。

简而言之,如果您正在寻找功能齐全的 AMQP 代理,那么请选择 Artemis,因为它已经做了很多工作,如果您只需要可以使消息流动的东西,那么 5.x 应该可以工作,但不要指望相同的服务质量。

大佬总结

以上是大佬教程为你收集整理的AMQP 忽略 ActiveMQ 5 重新传递策略全部内容,希望文章能够帮你解决AMQP 忽略 ActiveMQ 5 重新传递策略所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。