【问题标题】:javax.jms.JMSException: Channel was inactive for too long: localhost/127.0.0.1:7676javax.jms.JMSException:通道太长时间处于非活动状态:localhost/127.0.0.1:7676
【发布时间】:2020-11-16 16:41:37
【问题描述】:

我正在尝试使用 ActiveMQ 从独立的 java 代码连接 jms 服务器,但我正在努力解决以下异常。我尝试了各种选择,但无法找出根本原因。

以下代码行失败:

jmsConnection.start();

我的经纪人网址是:

tcp://localhost:7676?wireFormat.maxInactivityDuration=0

堆栈跟踪如下:

javax.jms.JMSException: Channel was inactive for too long: localhost/127.0.0.1:7676
        at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
        at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1206)
        at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1289)
        at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:456)
        at com.bt.ccdr.dbtoqueue.DBToQueueHelperImpl.getJMSConnection(DBToQueueHelperImpl.java:172)
        at com.bt.ccdr.dbtoqueue.DBToQueueHelperImpl.main(DBToQueueHelperImpl.java:42)
Caused by: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too long: localhost/127.0.0.1:7676
        at org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:225)
        at org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:83)
        at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:100)
        at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
        at org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:74)
        at org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:79)
        at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1195)
        ... 4 more

【问题讨论】:

    标签: connection jms activemq


    【解决方案1】:

    将连接字符串更改为failover:(tcp://localhost:7676)failover transport 层通过标准 OpenWire tcp 传输重新连接逻辑。

    【讨论】:

    • 谢谢杰克,我已经改变了上面的连接字符串。在此更改之后,我打印了以下日志,2013 年 8 月 13 日下午 6:45:47 org.apache.activemq.transport.failover.FailoverTransport doReconnect 信息:成功连接到 tcp://localhost:7676 2013 年 8 月 13 日 6:下午 45:47 org.apache.activemq.transport.failover.FailoverTransport handleTransportFailure 警告:传输到 tcp://localhost:7676 失败,尝试自动重新连接,原因是:java.io.IOException:未知数据类型:99
    • 这听起来像是某种线路格式不匹配。您是否使用与代理相同版本的 ActiveMQ 客户端库?更重要的是,您是否在使用 ActiveMQ 代理? 7676是OpenMQ使用的默认端口,需要OpenMQ JMS库而不是ActiveMQ。
    • 感谢 Jake,我对 JMS 很陌生,您的提示对我帮助很大。使用 openMQ API 我能够连接并将消息发送到队列。再次感谢!!!!
    猜你喜欢
    • 2015-05-13
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多