【问题标题】:JMSException InterruptedIOException - the producer thread get interruptedJMSException InterruptedIOException - 生产者线程被中断
【发布时间】:2015-11-02 20:17:28
【问题描述】:

我收到 JMS 异常,似乎队列没有退出或没有完成任务。

消息是异步的,大部分时间都可以正常工作,但有时会低于异常。似乎听众一直在听另一边,但在生产者方面却出现了这个异常。

javax.jms.JMSException: java.io.InterruptedIOException
at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1266)
at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1350)
at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:495)
at com.vtech.mqservice.response.SendResponse.sendResponseToQueue(SendResponse.java:44)


Caused by: java.io.InterruptedIOException
at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:102)
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:1244)
... 0 more

请帮助我确定导致生产者线程中断的原因。

我会将 activemq 版本升级到最新版本并更新结果。

请指点我正确的方向?

更新:使用的ActiveMQ版本是activemq-all-5.3.0.jar

【问题讨论】:

    标签: java jms rabbitmq activemq blockingqueue


    【解决方案1】:

    我用谷歌搜索了你的异常,没有得到准确的答案,但后来我浏览了 ActiveMQ 的 WireFormatNegotiator 的源代码。

    你可以在这里找到,http://alvinalexander.com/java/jwarehouse/activemq/activemq-core/src/main/java/org/apache/activemq/transport/WireFormatNegotiator.java.shtml

    public void oneway(Object command) throws IOException {
        try {
            if (!readyCountDownLatch.await(negotiateTimeout, TimeUnit.MILLISECONDS)) {
                throw new IOException("Wire format negotiation timeout: peer did not send his wire format.");
            }
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            throw new InterruptedIOException();
        }
        super.oneway(command);
    }
    

    我认为您的问题与“negotiateTimeout”有关。也许您应该设置一定的超时时间,或者如果您之前放置过它,则将其删除。

    【讨论】:

      【解决方案2】:

      我遇到了同样的异常,发现 JVM MaxPermSize 很低。我将大小增加到 1024Mb,它起作用了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-24
        • 2017-02-01
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多