1

我有一个运行一些应用程序的 4 节点 websphere 应用程序服务器集群。应用程序侦听 websphere mq 服务器的队列。我已经在集群范围内创建了 jms 资源,因此所有节点都连接到同一个队列管理器,并且在 mq explorer 中队列的打开输入计数为 4。问题是,如果将消息发布到队列中,其中一个节点会抓取消息并开始处理,但它会引发错误,指出消息头不正确。当我关闭 3 个节点并只保持一个运行时,该节点上的应用程序读取了消息并开始正常处理。我认为读取争用在 mq 中不是问题,但事实指向另一个方向。

4

1 回答 1

0

如果您使用 aGET而不是 a阅读同步点下的消息,BROWSE则除非发出且 until 发出,否则没有其他线程可以检索它ROLLBACK。如果消息可以处理,则在完成时发出COMMIT

另一方面,如果您BROWSE收到消息,那么所有线程都可以检索相同的消息。

无论发生什么,都不能归因于对同一消息的线程争用以某种方式破坏了消息。无论消息是被浏览还是破坏性检索,WMQ 都保证调用的完整性和原子操作。要对此进行诊断,有必要获得有关您所看到的确切错误的更多信息,包括打印的链接异常,其中将包含传输提供程序的本机返回代码。

于 2013-08-23T05:37:23.043 回答