1

我们的进程需要从本地 Q 管理器上的主题读取消息,并写入同一本地 Q 管理器上的不同主题。

要阅读我们使用过的消息MQCB。消息到达进程的回调函数。然而,虽然回调保持注册状态,但我们无法向MQPUT其他主题发送消息。

我们收到一条错误消息: 2500 : MQRC_HCONN_ASYNC_ACTIVE An attempt to issue an MQI call has been made while the connection is started

显然,单个连接句柄不能同时用于读取和写入。我们必须暂停MQCB,MPUT消息并恢复MQCB以使其工作。

有没有办法避免不得不暂停和恢复?

提前致谢

4

1 回答 1

1

是的,这是使用 MQCB 时的预期行为。您可以采取两种方法:

1) 创建另一个到同一个队列管理器的连接以发布消息。
2)如果您的设计是每当您在回调函数上收到消息时发布消息,则从回调函数本身发布消息。

更新

MQRC_ALREADY_CONNECTED (2002) 问题:您使用了哪个 MQCNO_HANDLE_SHARE_* 选项?建议您使用 MQCNO_HANDLE_SHARE_BLOCK 选项来解决这个问题。我编写了一个示例程序,并使用 MQCNO_HANDLE_SHARE_BLOCK 选项在同一个线程上创建了两个连接。

于 2013-04-23T10:12:28.720 回答