Websphere MQ C++ 多线程

Posted

技术标签:

【中文标题】Websphere MQ C++ 多线程【英文标题】:Websphere MQ C++ Multi-threading 【发布时间】:2014-05-10 03:14:28 【问题描述】:

我是 Websphere MQ V7 C++ 的新手。我正在考虑创建 多线程应用程序 来获取和响应队列中的消息。你们能给我一个关于这种使用 pthread 库的多线程方法的例子吗?我不知道如何创建一个。

谢谢! :)

【问题讨论】:

【参考方案1】:

我个人不建议使用 C++ api - 它已经稳定并且没有为更新的功能进行扩展。改用来自 C++ 应用程序的 C 调用

http://pic.dhe.ibm.com/infocenter/wmqv7/v7r1/index.jsp?topic=%2Fcom.ibm.mq.doc%2Fzd00030_.htm “从 WebSphere MQ 7.0 版开始,WebSphere MQ 编程接口的增强功能将不适用于 C++ 类。”

就多线程方法而言,它应该与任何普通线程程序没有什么不同...如果您不使用共享 hconns,则 hconn 仅对创建它的线程有效,如果您使用共享 hconns我不会尝试同时跨线程共享它们(调用通常会阻塞,具体取决于共享选项)。

【讨论】:

感谢您的回复,非常感谢。 :) 关于多线程 MQ C API 的使用,是否有任何方法可以中止等待的 MQGET(例如,在终止应用程序时)?如果正在进行 MQGET,则 MQDISC 和 MQCLOSE 似乎都会阻塞。 每个 hconn 在任何时间点都只能有一个 API 正在运行。所以你会有几个选择......有2个连接,然后在第二次唤醒mqget(虚拟消息,使队列被禁止)或者使用更新的MQCB,而不是坐在MQGET中,当你被调用时消息可用。如果您必须通过单个连接执行此操作,请考虑使用 MQGET/wait,如果您超时,请检查是否应该中止,如果没有,则返回等待。【参考方案2】:

在其他情况下,如果您让获取消息的程序做某事并将消息作为响应,而不做另一个复杂的逻辑。如果您没有足够的 P-trhead 经验,您可以将该程序实例化 n 次。

【讨论】:

以上是关于Websphere MQ C++ 多线程的主要内容,如果未能解决你的问题,请参考以下文章

Jboss (6.4 EAP) 到 WebSphere (7.x)

IBM websphere MQ 消息发送与获取

数据传输王者之争:如何在IBM WebSphere MQ与TongLINK/Q间做选择?

WebSphere MQ 配置问题

IBM Websphere MQ 基本实验操作

从 WebSphere 8 运行 Java 8 MQ 应用程序时出错