0

我对JMS有一个非常奇怪的问题。

我有两台机器A-WindowsB-Linux机器 A初始化 JMS(创建一个生产者和一个消费者)。(Java代码

机器 B向机器 A发送消息。机器A收到!消息并将响应发送回机器 B。(C++ 代码

我的问题是:当我运行机器时,代码一切正常!但是当我在另一台 Windows 机器上运行相同的二进制文件时(我们称之为机器 C),来自机器 B的消息被接受,但机器 C不发送答案。

我嗅探了网络,发现在机器 A的情况下,它发送TCP-ACK,然后是TCP PSH-ACK(带有正确的响应)。但是机器 C只发送TCP-ACK *而没有* TCP-PSH-ACK

编辑: 使用 JConsole 我注意到机器 C的主题属性:DequeueCount、DispatchCount、Enqueue Count 都是零。似乎生产者没有发送/排队任何东西(没有抛出异常)。

任何帮助表示赞赏!

4

1 回答 1

1

似乎解决方案是如此明显,我为没有注意到它而感到有些尴尬。无论如何,机器 A上运行的代码似乎使用了非事务会话,而机器 C上的代码使用了事务会话而没有COMMITING !!!!。

所以我关闭了会话的事务标志(因为它无论如何都符合我的需要),它就像一个魅力!

关于在没有提交 svn 的情况下更改代码的家伙....稍后我会和他谈谈 :)

于 2012-07-03T16:06:15.847 回答