[z/OS]

什么是共享队列?

共享队列是本地队列的一种类型。 该队列上的消息可由综合系统中的一个或多个队列管理器访问。

队列共享组

可以访问同一组共享队列的队列管理器构成一个称为 队列共享组的组。

任何队列管理器都可以访问消息

队列共享组中的任何队列管理器都可以访问共享队列。 这意味着您可以将消息放入一个队列管理器上的共享队列,并从另一个队列管理器中获取同一消息。 这为队列共享组中不需要队列管理器之间的通道处于活动状态的通信提供了快速机制。

IBM® WebSphere® MQ 7.1 和更高版本支持将消息卸载到 Db2® 或共享消息数据集 (SMDS)。 可配置任何大小的消息的卸载。

在较早版本的 IBM MQ中,大型消息 (> 63 KB) 具有存储在耦合设施 (4 K) 中的占位符以及存储在 Db2中的消息数据。

图 1 显示了三个队列管理器和一个耦合设施,构成队列共享组。 所有三个队列管理器都可以访问耦合设施中的共享队列。

应用程序可以连接到队列共享组中的任何队列管理器。 由于队列共享组中的所有队列管理器都可以访问所有共享队列,因此应用程序不依赖于特定队列管理器的可用性; 队列共享组中的任何队列管理器都可以为队列提供服务。

这将提供更大的可用性,因为队列共享组中的所有其他队列管理器都可以在其中一个队列管理器出现问题时继续处理该队列。

图 1。 队列共享组
说明三个队列管理器和链接以形成队列共享组的耦合设施的图。

队列定义由所有队列管理器共享

共享队列定义存储在 Db2 数据库表 OBJ_B_QUEUE 中。 因此,您只需要定义一次队列,然后队列共享组中的所有队列管理器都可以访问该队列。 这意味着要创建的定义较少。

相反,非共享队列的定义存储在拥有该队列的队列管理器的页集 0 上 (如 页集 中所述)。

如果已在定义队列管理器的页集上定义了具有该名称的队列,那么不能定义共享队列。 同样,如果存在同名的共享队列,那么不能在队列管理器页集上定义队列的本地版本。