MQ 的通信:
MQ 的通信机制:
1. 异步通信
程序 A 准备好一条消息,并将其放入队列。然后,程序 B 从该队列中获取消息,并对其进行处理。这两个程序都使用一种应用程序编程接口 (API) 与该队列进行交互。WebSphere MQ API 称为消息队列接口 (MQI)。任何一个程序都无需了解对方的存在,并且这两个程序无需同时执行。如果程序 A 在程序 B 尚未执行的时候将一条消息放入队列,那么该队列将存储这条消息,直到程序 B 开始执行并准备处理这条消息。类似地,当程序 B 从队列中检索消息时,程序 A 可能已经不再处于执行状态。
2. 同步通信
在同步的应用程序设计中,如图 2 所示,假定同时执行这两个应用程序。程序 A 向队列 1 发送一条消息并等待应答。程序 B 检索得到该消息,并对它进行处理,然后将应答消息发送到队列 2 中,以便程序 A 进行检索。在使用 WebSphere MQ 设计应用程序时,通常每个程序使用不同的队列向其他程序发送消息。虽然这不是必需的,但这样可以提供更简单的应用程序设计和编程逻辑。另外请记住,这里假定两个程序同时执行。如果当程序 A 发送消息时,程序 B 没有执行,那么程序 A 将阻塞,直到程序 B 启动并对消息进行处理。这是同步应用程序通信中的设计问题。
3.消息通信
对于 WebSphere MQ 来说,异步设计是一种非常合适的模型。程序 A 将消息放到队列中,并继续执行,即使程序 B 并不对这些消息进行处理,也是如此。在这种情况下,队列将存储这些消息,直到程序 B 重新启动。这种模型有一种变种,即程序 A 将一条或多条消息放到队列中,并继续进行其他的处理,然后返回来检索和处理应答消息。
程序之间的这种通信方式称为消息传递。它与其他通信方式(如对话式的通信或调用和返回通信)的不同之处在于,进行通信的程序之间具有时间独立性。程序接收消息作为输入,并输出其结果作为消息,而不需要同时运行发送或接收程序。
4. 队列管理器和 MQI
WebSphere MQ 中的队列由队列管理器 所拥有并进行管理。队列管理器还为应用程序提供了 MQI API,允许它们访问队列以及其中包含的消息。MQI 在 WebSphere MQ 支持的所有平台中保持一致,并对应用程序隐藏了队列管理器的实现细节。
MQI 中有 8 种主要的调用:
MQCONN——连接到队列管理器
MQCONNX——使用连接选项连接到队列管理器
MQDISC——断开与队列管理器的连接
MQOPEN——打开队列以便进行访问
MQCLOSE——关闭访问的队列
MQPUT——将一条消息放入队列
MQGET——从队列中获取一条消息
MQPUT1——打开队列,放入一条消息,然后关闭该队列
MQI 中有 5 种次要的调用:
MQBEGIN——开始一个工作单元
MQCMIT——提交一个工作单元
MQBACK——回滚一个工作单元
MQINQ——查询 WebSphere MQ 对象(队列是一种 WebSphere MQ 对象,队列管理器是另一种对象)的属性
MQSET——设置 WebSphere MQ 对象的属性
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21634752/viewspace-668343/ ,如需转载,请注明出处,否则将追究法律责任。