gpt4 book ai didi

java - Websphere MQ 异步放置不起作用

转载 作者:行者123 更新时间:2023-12-01 12:52:49 24 4
gpt4 key购买 nike

我们有一个使用 Websphere MQ v.7.0.1 的应用程序。服务器在 Linux 上运行,客户端应用程序在 Windows 7 上运行,并使用 Java 的 MQ 类用 Java 编写。客户端和服务器之间的队列之一专门用于客户端和服务器之间的保活协议(protocol)。由于各种我们不需要讨论的原因,这对于维护与“真实后端”的连接是必要的,而 MQ 服务器只是其中的一部分。

Keepalive 协议(protocol)工作得相当好,除非其中一台服务器出现故障并且客户端需要在它可用时重新连接到它。然后我们就有问题了。

我们认为我们的 keepalive 协议(protocol)的实现过于复杂。客户端只需定期向服务器发送这些保活消息,无需关心它们是否到达服务器。如果不这样做,服务器将采取
采取适当的行动。

因此,异步看跌期权自然出现。我们的第一次尝试如下:

来自此:

MQPutMessageOptions pmo = new MQPutMessageOptions();  // accept the defaults
QueueKL.put(mqMessage,pmo);

对此:

MQPutMessageOptions pmo = new MQPutMessageOptions();                    
pmo.options |= CMQC.MQPMO_ASYNC_RESPONSE;
QueueKL.put(mqMessage,pmo);

结果是一个令人不快的意外。 put 调用不会立即返回,而是永远不会返回,并且调用它的线程也不会再显示任何生命迹象。

当然,这个调用是在 try-catch block 中启动的,我们 try catch 任何可能抛出的 Throwable 作为最后的手段,即 catch (Throwable t) 并记录它。没有记录任何此类内容。此时线程似乎被阻塞,与我预期发生的情况完全相反。

我在实现这个过程中肯定遗漏了一些关键的东西
调用,(队列或队列管理器中是否需要一些特殊设置?IBM 文档在这里非常稀疏)但我不知道那是什么。请帮我查明真相。

最佳答案

这有帮助吗?碰巧你的版本是 7.0.1.8 吗?

http://www-01.ibm.com/support/docview.wss?uid=swg1IC85084

“此问题还会影响 WebSphere MQ 类的用户将消息放入 WebSphere MQ 队列的 Java在 PUT 消息选项中指定 MQPMO_ASYNC_RESPONSE(MQPMO)结构。”

尝试确保客户端版本为 7.0.1.9 或 7.1.0.2 或更高版本

关于java - Websphere MQ 异步放置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com