消息排队的主要功能和优点

此信息突出显示了消息排队的一些功能和优点。 它描述了诸如消息排队的安全性和数据完整性之类的功能。

注: 在考虑 IBM® MQ 客户机和服务器时,不必更改服务器应用程序以支持新平台上的其他 IBM MQ MQI clients 。 同样, IBM MQ MQI client 可以在不进行更改的情况下使用其他类型的服务器。

程序之间没有直接连接

消息排队是一种用于间接程序间通信的技术。 它可以在程序相互通信的任何应用程序中使用。 通信由一个将消息放入队列 (由队列管理器拥有) 的程序和另一个从队列中获取消息的程序进行。

程序可以获取由其他程序放入队列中的消息。 其他程序可以连接到与接收程序相同的队列管理器,也可以连接到其他队列管理器。 此另一个队列管理器可能位于另一个系统上,另一个计算机系统上,甚至位于另一个业务或企业中。

使用消息队列进行通信的程序之间没有物理连接。 程序将消息发送到队列管理器拥有的队列,另一个程序从队列中检索消息 (请参阅 图 1 )。
图 1。 与传统通信相比的消息排队

两张图将传统通信应用程序的结构与通过消息排队进行通信的应用程序进行对比。

与电子邮件一样,作为事务一部分的个别消息在存储转发的基础上通过网络传输。 如果节点之间的链接发生故障,那么将保留该消息,直到恢复该链接,或者操作员或程序重定向该消息。

在程序中隐藏消息从队列移动到队列的机制。 因此,程序更简单。

独立于时间的通信

请求其他人执行工作的程序不必等待对请求的应答。 他们可以执行其他工作,并在应答到达时或稍后处理该应答。 在编写消息传递应用程序时,当程序发送消息时,或者当目标能够接收消息时,您不需要知道 (或关心)。 此消息不会丢失; 队列管理器将保留此消息,直到目标准备好对其进行处理为止。 消息将保留在队列中,直到程序将其除去。 这意味着发送和接收应用程序被解耦; 发送方可以继续处理,而无需等待接收方确认接收消息。 发送消息时,目标应用程序甚至不必正在运行。 它可以在消息启动后检索该消息。

小程序

消息排队允许您使用小型自包含程序的优点。 您可以将作业分布在几个较小的独立程序上,而不是单个大型程序按顺序执行作业的所有部分。 请求程序将消息发送到每个单独的程序,要求它们执行其功能; 当每个程序完成时,结果将作为一条或多条消息发送回。

消息驱动的处理

当消息到达队列时,它们可以使用 触发自动启动应用程序。 如果需要,可以在处理消息 (或消息) 时停止应用程序。

事件驱动的处理

可以根据队列的状态来控制程序。 例如,您可以安排程序在消息到达队列时立即启动,也可以指定程序在队列上具有高于特定优先级的 10 条消息或队列上具有任何优先级的 10 条消息之前不启动。

消息优先级

当程序将消息放入队列中时,它可以将优先级分配给消息。 这将确定添加新消息的队列中的位置。

程序可以按消息在队列中的顺序或通过获取特定消息从队列中获取消息。 (如果程序正在查找对其先前发送的请求的应答,那么程序可能希望获取特定消息。)

安全性

提供了安全设施,包括在应用程序使用队列管理器时对其进行认证,在这些应用程序使用资源 (例如队列管理器上的队列) 时进行授权检查,以及在消息数据通过网络传输时以及在消息数据驻留在队列上时对其进行加密。 有关安全性的更多信息,请参阅 安全性概述

数据完整性

数据完整性由工作单元提供。 在每个 MQGET 或 MQPUT 上,完全支持将工作单元的开始和结束同步作为选项,从而允许落实或回滚工作单元的结果。 同步点支持在内部或外部对 IBM MQ 运行,具体取决于为应用程序选择的同步点协调形式。

恢复支持

为了实现恢复,将记录所有持久 IBM MQ 更新。 如果需要恢复,那么将复原所有持久消息,回滚所有正在进行的事务,并以控制中的同步点管理器的正常方式处理任何同步点落实和回退。 有关持久消息的更多信息,请参阅 消息持久性