我们的流程需要从本地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
以使其生效。
有没有办法避免不得不暂停和恢复?
提前致谢
答案 0 :(得分:1)
是的,这是使用MQCB时的预期行为。您可以采取两种方法:
1)创建与同一队列管理器的另一个连接以发布消息 2)如果您的设计是在回调函数上收到消息时发布消息,则从回调函数本身发布消息。
<强>更新强>
MQRC_ALREADY_CONNECTED(2002)问题:您使用了什么MQCNO_HANDLE_SHARE_ *选项?建议您使用MQCNO_HANDLE_SHARE_BLOCK选项来解决此问题。我编写了一个示例程序,并使用MQCNO_HANDLE_SHARE_BLOCK选项在同一个线程上创建了两个连接。