JMSException InterruptedIOException - 生产者线程被中断

时间:2015-08-10 19:33:12

标签: java jms rabbitmq activemq blockingqueue

我收到了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

2 个答案:

答案 0 :(得分: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”的。也许你应该设置一定量的超时或删除它,如果你之前。

答案 1 :(得分:0)

我得到了同样的异常并且发现JVM MaxPermSize很低。我将大小增加到1024Mb并且工作正常。