activemq内嵌到java程序,broker和Consumer所在程序直接kill,producer检测不到失连

发布于 2021-11-26 13:43:46 字数 182 浏览 828 评论 1

服务器端有多个进程,其中进程A中启动broker和consumer监听其他进程状态,进程B、C、D都有producer,会定时发报活信息,

B、C、D按顺序启动,这时候直接在任务管理器中kill进程A,进程B无法检测到connection断开,重启A后,B的报活消息始终收不到,将activemq外置,直接中bat起的话,一切正常,有谁知道是怎么回事?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜血缘 2021-11-27 20:10:11

上述描述问题B、C、D都是A的子进程!

现在发现问题在于,activemq所在的java进程如果启动子进程,该父进程重启后与之前的connection都失连,经定位,发现父进程关闭后,子进程中发生阻塞:

"ActiveMQ Transport: tcp:///127.0.0.1:61616@10773" prio=6 tid=0x000000000a9ef000 nid=0x3310 runnable [0x000000000f47f000]
   java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50)
at org.apache.activemq.transport.tcp.TcpTransport$2.fill(TcpTransport.java:604)
at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58)
at org.apache.activemq.transport.tcp.TcpTransport$2.read(TcpTransport.java:589)
at java.io.DataInputStream.readInt(DataInputStream.java:370)
at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:275)
at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:221)
at 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(Thread.java:662)

   Locked ownable synchronizers:
- None

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文