May*_*res 3 activemq-classic jms
我们使用ActiveMQ 5.8.0通过TCP将我们的Java应用程序连接到另一个系统.请求/回复(与回复临时队列同步)与我们的客户及其相应部分一起正常工作.
但我们不确定如何处理"异常"情况,例如短暂的网络故障.我们正在测试应用程序是否可以在套接字重新连接后继续正常工作.
但直到现在我们无法管理,因为客户端似乎没有按预期自动重新连接到代理.我们考虑过在自己的TransportListener中自己实现它,但不建议这样做(请参阅传输侦听器和ActiveMq重启,其中ActiveMQ成员Tim Bish提示使用故障转移协议).但故障转移只是设法切换到另一个经纪人,如果一个人失败,对吧?
目前,我们仅使用TransportListener来监视日志文件中的连接状态,这会导致一些日志条目如下面或类似(在下面的长日志中发布).
ActiveMQ连接执行程序:...生产者收到:java.net.SocketException:...
class ConnectionStateMonitor
implements TransportListener
{
@Override
public void onCommand(Object command)
{
logInfo("Producer received: " + command);
}
@Override
public void onException(IOException exception)
{
logError("Producer received: " + exception);
}
@Override
public void transportInterupted()
{
logError("Producer received transport interuption.");
}
@Override
public void transportResumed()
{
logInfo("Producer received transport resumption.");
}
}
Run Code Online (Sandbox Code Playgroud)
对不起,发布下面有堆栈跟踪的长日志摘录,但也许有人会立即看到丢失的内容.
我们目前正在使用以下设置:
任何想法如何解决这个问题(以及如何格式化下面的日志)?
提前致谢!
2013-06-05 14:09:21,676 | main | Signal | DEBUG |等待60000 2013-06-05 14:09:30,279 | ActiveMQ InactivityMonitor WriteCheckTimer | AbstractInactivityMonitor | DEBUG | WriteChecker自上次写入检查后经过6666 ms.2013-06-05 14:09:30,282 | ActiveMQ InactivityMonitor Worker | AbstractInactivityMonitor | DEBUG |运行WriteCheck [tcp://192.168.1.29:61616] 2013-06-05 14:09:36,945 | ActiveMQ InactivityMonitor WriteCheckTimer | AbstractInactivityMonitor | DEBUG | WriteChecker自上次写入检查后经过6666毫秒.2013-06-05 14:09:36,945 | ActiveMQ InactivityMonitor Worker | AbstractInactivityMonitor | DEBUG |运行WriteCheck [tcp://192.168.1.29:61616] 2013-06-05 14:09:40,579 | ActiveMQ Transport:tcp:// test-server/192.168.1.29:61616 @ 54127 | ThreadPoolUtils | DEBUG |关闭ExecutorService:java.util.concurrent.ThreadPoolExecutor@13e0aba是shutdown:true并终止:false take:0.000秒.引发者:javax.jms.JMSException:在org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1391)的org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)处重置连接. apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1912)位于org.apache.activemq.ActiveMQMessageProducer.(ActiveMQMessageProducer.java:125)at org.apache.activemq.ActiveMQSession.createProducer(ActiveMQSession.java:956)at de. wer.services.activemq.ActiveMqConnectionImpl.sendRequest(ActiveMqConnectionImpl.java:218)... 4更多2013-06-05 14:09:40,579 | ActiveMQ Transport:tcp://test-server/192.168.1.29:61616 @ 54127 | ActiveMQConnection | DEBUG |没有异常侦听器的异步异常:java.net.SocketException:连接重置java.net.SocketException:在org.apache.activemq.transport.tcp的java.net.SocketInputStream.read(未知源)处重置连接org.apache.activemq.transport.tcp中的.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50).位于org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)的tcpTransport $ 2.fill(TcpTransport.java:604)位于org.apache.activemq.transport.tcp.TcpTransport $ 2.read(TcpTransport. java:589)java.io.DataInputStream.readInt(Unknown Source)at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:275)at org.apache.activemq.transport.tcp.TcpTransport.readCommand( TcpTransport.java:221)org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213)at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)at java .lang.Thread.run(Unknown Source)由以下引起:java.net.SocketException:在org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.)的java.net.SocketInputStream.read(未知源)上重置连接. java:50)atg.apache.activemq.transport.tcp.TcpTransport $ 2.fill(TcpTransport.java:604)at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStr eam.java:58)位于org.apache.activeMq.openwire.OpenWireFormat的java.io.DataInputStream.readInt(未知来源)的org.apache.activemq.transport.tcp.TcpTransport $ 2.read(TcpTransport.java:589) org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)org.apache.activemq.transport.tcp.TcpTransport.doRun.(. )org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)... 1更多2013-06-05 14:09:40,583 | ActiveMQ连接执行程序:tcp:// test-server/192.168.1.29:61616@54127|TcpTransport|DEBUG|Stopping transport tcp://test-server/192.168.1.29:61616 @ 54127 2013-06-05 14:09:40,583 | ActiveMQ连接执行程序:tcp:// test- server/192.168.1.29:61616 @ 54127 | TaskRunnerFactory | DEBUG |使用ExecutorService初始化TaskRunnerFactory [ActiveMQ任务]:java.util.concurrent.ThreadPoolExecutor@186f247 2013-06-05 14:09:40,584 | ActiveMQ Task-1 | TcpTransport | DEBUG |关闭套接字套接字[addr = test-server/192.168.1 .29,port = 61616,localport = 54127]引起:javax.jms.JMSException:在org.apache.activemq.ActiveMQConnection上的org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)处重置连接.位于org.apache.activemq的org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1912)的orSe.apache.activemq.ActiveMQMessageProducer.<init>(ActiveMQMessageProducer.java:125)上的syncSendPacket(ActiveMQConnection.java:1391) .ActiveMQSession.createProducer(ActiveMQSession.java:956)at dewer.services.activemq.ActiveMqConnectionImpl.sendRequest(ActiveMqConnectionImpl.java:218)... 4更多引起:java.net.SocketException:java.net连接重置位于org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)的.socketInputStream.read(未知来源)org.apache.activemq.transport.tcp.TcpTransport $ 2.fill(TcpTransport.java:604 )org.apa上的org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)che.activemq.transport.tcp.TcpTransport $ 2.read(TcpTransport.java:589)位于org.apache.activemq.openwire.OpenWireFormat.unmarshal的java.io.DataInputStream.readInt(未知来源)(OpenWireFormat.java:275) org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)位于org.apache.activemq.transport的org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213) .tcp.TcpTransport.run(TcpTransport.java:196)... 1更多2013-06-05 14:09:40,584 | ActiveMQ连接执行程序:tcp://test-server/192.168.1.29:61616 @ 54127 | ThreadPoolUtils | DEBUG |强制关闭ExecutorService:java.util.concurrent.ThreadPoolExecutor@186f247由以下原因引起:javax.jms.JMSException:在org中的org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)处重置连接.位于org.apache.activemq.ActiveMQMessag的org.apache.activemq.ActiveMQSession.syncSendPacket(ActiveMQSession.java:1912)的apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1391)e.producer.(ActiveMQMessageProducer.java:125)atg.apache.activemq.ActiveMQSession.createProducer(ActiveMQSession.java:956)at dewer.services.activemq.ActiveMqConnectionImpl.sendRequest(ActiveMqConnectionImpl.java:218)... 4更多引起:java.net.SocketException:在org.apache.activemq的org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)的java.net.SocketInputStream.read(未知来源)处重置连接.transport.tcp.TcpTransport $ 2.fill(TcpTransport.java:604)位于org.apache.activemq.transport.tcp.TcpTransport $ 2的org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)位于org.apache.activemq.transport.tcp的org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:275)的java.io.DataInputStream.readInt(未知来源).read(TcpTransport.java:589) org.apach中org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:213)的.TcpTransport.readCommand(TcpTransport.java:221)e.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)... 1更多2013-06-05 14:09:40,587 | ActiveMQ连接执行程序:tcp://test-server/192.168.1.29: 61616 @ 54127 | ActiveMqConnectionImpl | ERROR |生产者收到:java.net.SocketException:连接重置
Jak*_*rab 12
听起来像故障转移肯定是你想要使用的东西.您不需要故障转移到另一个代理 - URI只是指示客户端库重新连接,因此您可以执行以下操作:
failover:(tcp://myBroker:61616)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10712 次 |
| 最近记录: |