【问题标题】:ActiveMQ Artemis AMQ219016 and AMQ219006 when consuming/producing messages消费/生产消息时的 ActiveMQ Artemis AMQ219016 和 AMQ219006
【发布时间】:2022-10-05 21:16:27
【问题描述】:
我们有一个带有队列和生产者的 ActiveMQ Artemis 2.17.0 实例,有时会失败并出现以下错误:AMQ219006: Channel disconnected 和AMQ219016: Connection failure detected. Unblocking a blocking call that will never get a response 之后。我已经阅读了有关此错误的不同资源,但无法弄清楚可能导致它的原因。
这可能是由队列上的高吞吐量引起的吗?
标签:
jms
micronaut
activemq-artemis
【解决方案1】:
AMQ219006 和 AMQ219016 都不能通过“高可用性”(即 HA)配置来解决。 answer you cited 解释了这些消息的根本原因。 HA 不会解决这个问题。
【解决方案2】:
您如何确定一条消息是正确的/是下一条?如果它是自定义消息属性,您可以通过使用消息选择器(指定此属性的预期值)来跳过此消费和放回消息周期,以立即消费正确的消息。如果它不是消息属性,是否可以重新设计并让消息的生产者将此排序信息添加到这样的自定义消息属性中?
这不会避免收到您完全描述的错误情况。但是,由于您的应用程序设计,您似乎正在执行大量潜在的冗余排队活动,这也增加了您在事务中的风险,当在代理级别发生故障转移时无法继续,从而导致您目前偶尔面临的异常。