我对 JMS 有一个非常奇怪的问题。
我有两台机器 A-Windows , B-Linux 。 计算机A 初始化JMS(创建一个生产者和一个使用者)。 ( Java代码)
计算机B 向计算机A 发送消息。 机器A 收到!消息并将响应发送回计算机B 。 ( C ++代码)
我的问题是:当我运行机器A 代码时,一切正常!但是当我在另一台Windows机器上运行相同的二进制文件(让我们称之为机器C )时,机器B 的消息被接受但是机器C 不发送答案。
我嗅到网络,发现在机器A 的情况下,它会发送 TCP-ACK ,然后发送 TCP PSH-ACK (正确的回应)。但计算机C 仅发送 TCP-ACK * 而不 * TCP-PSH-ACK 。
编辑: 使用JConsole我注意到机器C 的主题属性:DequeueCount,DispatchCount,Enqueue Count都是零。似乎生产者没有发送/排队任何东西(没有抛出异常)。
感谢任何帮助!
答案 0 :(得分:1)
似乎解决方案是如此明显,我有点不好意思没有注意到它。无论如何,计算机A 上运行的代码似乎使用非交易会话,而计算机C 上的代码使用交易没有提交的会话!!!!。
所以我关闭了会话的交易标志(因为它符合我的需要),它就像一个魅力!
关于在不承诺使用svn的情况下更改代码的家伙....我稍后会与他交谈:)