2015-08-10 11 views
6

Ich erhalte JMS-Exception und es scheint, dass die Queue nicht beendet wird oder die Task nicht beendet wird.JMSException InterruptedIOException - der Producer-Thread wird unterbrochen

Nachrichten sind asynchron und funktionieren die meiste Zeit, aber manchmal unter Ausnahme. Es scheint, dass der Zuhörer auf der anderen Seite zuhört, aber auf Produzentenseite hat diese Ausnahme.

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 

Bitte helfen Sie mir zu identifizieren, was dazu führt, dass der Produzent Thread unterbrochen wird.

Ich aktualisiere activemq Version auf den neuesten Stand und werde die Ergebnisse aktualisieren.

Bitte weisen Sie mich in die richtige Richtung?

Update: ActiveMQ-Version verwendet wird, ist activemq-all-5.3.0.jar

Antwort

1

Ich googeln Ihre Ausnahme keine genaue Antwort bekam, aber dann ging ich durch den Quellcode für WireFormatNegotiator von ActiveMQ.

Sie hier finden können, 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); 
} 

Ich denke, das Problem irgendwie über "negotiateTimeout" ist. Vielleicht solltest du einen bestimmten Zeitlimit setzen oder es entfernen, wenn du es vorher gesetzt hast.

0

Ich habe die gleiche Ausnahme und herausgefunden, dass JVM MaxPermSize niedrig ist. Ich habe die Größe auf 1024 MB erhöht und es hat funktioniert.

Verwandte Themen