【问题标题】:ActiveMQ Artemis: producer fails with JMSException AMQ219016ActiveMQ Artemis:生产者失败并出现 JMSException AMQ219016
【发布时间】:2020-09-09 15:46:15
【问题描述】:

我们有一个带有队列和生产者的 ActiveMQ Artemis 2.14.0 实例,有时会失败并出现以下错误:

javax.jms.JMSException: AMQ219016: Connection failure detected. Unblocking a blocking call that will never get a response
    at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:467) ~[artemis-jms-client-all-2.14.0.jar!/:2.14.0] 

我们需要了解可能出现这种情况的场景。我们看到这种情况时有发生,我们不知道确切的情况。有没有人遇到过这种情况并可以提供任何解决方案?

【问题讨论】:

  • 这可能是由于网络问题导致连接关闭。您使用的是哪个版本的 ActiveMQ Artemis?
  • @DomenicoFrancescoBruscino 版本 2.14.0

标签: activemq-artemis


【解决方案1】:

The documentation 很好地描述了为什么会抛出这个异常:

如果客户端代码在对服务器的阻塞调用中,等待响应以继续执行,当发生故障转移时,新会话将不知道正在进行的调用。否则此调用可能会永远挂起,等待永远不会到来的响应。

为防止这种情况,Apache ActiveMQ Artemis 将通过使它们抛出 javax.jms.JMSException(如果使用 JMS)或带有错误代码 ActiveMQException.UNBLOCKEDActiveMQException 来解除对故障转移时正在进行的任何阻塞调用的阻塞。由客户端代码来捕获此异常并在需要时重试任何操作。

如果被解除阻塞的方法是对commit()prepare() 的调用,则事务将自动回滚,Apache ActiveMQ Artemis 将抛出javax.jms.TransactionRolledBackException(如果使用JMS)或ActiveMQException如果使用核心 API,则错误代码为 ActiveMQException.TRANSACTION_ROLLED_BACK

【讨论】:

    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 2019-04-29
    • 2015-11-02
    • 1970-01-01
    • 2021-07-29
    • 2015-04-12
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多