IBM MQ中主要对象的作用

本文介绍了MQ消息队列的基础概念,包括队列管理器、队列、通道等核心组件的功能和工作原理。详细解释了不同类型队列的区别及应用场景,如本地队列、传输队列、远程队列等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MQ基础概念,来自官方文档,感觉讲的还是蛮清楚的。

队列管理器

队列管理器是为应用程序提供消息传递服务的程序。使用消息队列接口(MQI)的应用程序可以将消息放置到队列并可从队列中获取消息。队列管理器确保消息可以发送至正确的队列或传递至另一个队列管理器。队列管理器处理向它发出的 MQI 调用以及提交给它的命令(无论从哪个源)。队列管理器为每个调用或命令生成合适的完成代码。
队列管理器是 MQ 消息传递网络中的主要组件。队列管理器主管网络中的其他对象,例如,将队列管理器连接在一起的队列和通道。队列管理器必须正在运行以执行下列任务:
* 启动通道
* 处理 MQI 调用
* 创建、删除或改变队列和通道定义
* 运行命令服务器以处理 MQSC 命令

队列

队列是存放消息的容器。连接至主管队列的队列管理器的业务应用程序可从队列检索消息或将消息放置到队列。队列在它可保存的最大消息数和这些消息的最大长度方面存在限制。

队列存在以下类型:

本地队列

本地队列是队列以及与此队列关联的一组消息的定义。
主管队列的队列管理器在其本地队列中接收消息。

传输队列

传输队列是特殊类型的本地队列。
当队列管理器将消息发送至远程队列管理器上的队列时,传输队列在本地存储此消息,直到远程队列管理器上的队列可用。
要创建传输队列,创建一个本地队列并将其用法属性更改为“传输”。

远程队列

远程队列定义是属于另一个队列管理器的队列的本地队列管理器上的定义。
要将消息发送至远程队列管理器上的队列,发送方队列管理器必须具有目标队列的远程定义。

别名队列

别名队列实际上不是队列;它们是现有队列的附加定义。
您创建指向实际本地队列的别名队列定义,但可以用与本地队列(基本队列)不同的名称来命名别名队列定义。
这表示您可更改应用程序使用的队列而无需更改此应用程序,您只需创建指向新的本地队列的别名队列定义。

模型队列

模型队列是您想让队列管理器根据需要动态创建的队列的模板。
当应用程序尝试将消息放置到模型队列时,队列管理器将动态地创建与此模型队列同名的本地队列。
以此方式创建的队列既可以是临时队列也可以是永久队列。

集群队列

集群队列是在集群中已共享的队列,这样的话,此集群中的所有队列管理器可使用集群通道在此队列放置和获取消息。

主题

主题标识发布的内容。主题是描述在发布/预订消息中所发布信息的主题的字符串。作为订户,您可以使用通配符指定主题或主题范围以接收您所需的信息。

主题标识发布的内容,它由长度最大可为 10240 个字符的字符串组成。主题是发布/预订系统中成功传递消息的关键。发布者为每条消息分配一个主题,而不是在每条消息中包含一个特定目标地址。队列管理器使该主题与一组已预订该主题的订户匹配,并将消息传递至其中每个订户。

发布者通过仔细选择消息中指定的主题,可以控制哪些订户接收到发布。
在定义消息的主题之前,发布者也可以使用该消息;在发布或预订中首次指定消息时,会创建一个主题。

预定或者订阅

预订是一个记录,它包含关于订户感兴趣并希望接收关于其信息的主题的信息。因此,预订信息确定哪些发布内容会转发至订户。订户可以接收来自不同发布者的信息,并且也可以将他们接收的信息发送至其他订户。

发布的信息将在 MQ 消息中进行发送,该信息的题目由一个主题进行标识。发布者在发布信息时指定主题,而订户则指定它要接收的发布所针对的主题。将仅对订户发送关于它预订的那些主题的信息。

发布

发布是由应用程序发送至发布/预订引擎的消息。然后,发布/预订引擎将消息发送至任何已预订接收这些消息的应用程序。

发布/预订引擎可根据发布中包含的信息类型以不同方式处理它接收的发布。
根据状态和事件信息,可以将发布按它们包含的信息类型进行分类:

状态发布

状态发布包含关于某件事的当前状态的信息,如股票价格或足球比赛的当前比分。
当发生某件事(如股票价格更改或足球比分更改)时,将不再需要先前的状态信息,因为它已被新的信息取代。
订户应用程序希望在启动时接收状态信息的当前版本,并希望在状态更改时接收到新的信息。

事件发布

事件发布包含关于发生的个别事件的信息,如购入某支股票或将球射进特定球门。
每个事件独立于其他事件。订户希望在事件发生时接收关于事件的信息。

保留发布

缺省情况下,发布/预订引擎在将某个发布发送至所有感兴趣的订户之后会删除该发布。
这种处理方法适合于事件信息,但并非始终适合于状态信息。发布者可以指定发布/预订引擎必须保存发布的副本,该副本则称为保留发布。
可以将副本发送至对该主题有兴趣的后续订户。这表示新的订户不必等待再次发布信息也能接收到信息。
因为发布/预订引擎仅为每个主题保留一个发布,所以当新发布到达时,将删除旧发布。
因此,请确保只有一个发布者在发送针对每个主题的保留发布。订户可以指定他们不想接收到保留发布,并且现有订户可以要求将保留发布的重复副本发送给他们。

通道

WebSphere® MQ 使用两种不同类型的通道:
* 消息通道,它是两个队列管理器之间的单向通信链路。WebSphere MQ 使用消息通道在队列管理器之间传送消息。要双向发送消息,您必须定义每个方向的通道。
* MQI 通道,它是双向通道,用于将应用程序(MQI 客户机)连接至服务器上的队列管理器。WebSphere MQ 使用 MQI 通道在 MQI 客户机和队列管理器之间传送 MQI 调用和响应。

消息通道

消息通道定义可以是下列其中一个类型:

发送方
发送方通道是队列管理器用来将消息发送至其他队列管理器的消息通道。
要使用发送方通道来发送消息,还必须在另一队列管理器上创建与此发送方通道同名的接收方通道。
如果正在实现“回调”机制,那么还可以将发送方通道与请求方通道一起使用。

服务器
服务器通道是队列管理器用来将消息发送至其他队列管理器的消息通道。
要使用服务器通道来发送消息,还必须在另一队列管理器上创建与此服务器通道同名的接收方通道。 您还可将服务器通道与请求方通道一起使用。
在此情况下,在通道另一端的请求方通道定义请求要启动的服务器通道定义。服务器将消息发送至请求方。只要服务器知道对方通道的连接名称,它还可启动通信。

接收方
接收方通道是队列管理器用来从其他队列管理器接收消息的消息通道。
要使用接收方通道来接收消息,还必须在另一队列管理器上创建与此接收方通道同名的发送方通道或服务器通道。

请求方
请求方通道是队列管理器用来将消息发送至其他队列管理器的消息通道。
要使用请求方通道发送消息,还必须在另一队列管理器上创建发送方通道(如果您正在实现回调机制的话)或服务器通道。

集群发送方
集群发送方(CLUSSDR)通道定义用来定义通道发送端,集群队列管理器可通过它将集群信息发送至其中一个完整存储库。
集群发送方通道用于告知存储库有关队列管理器状态的任何更改,例如,添加或除去队列。它还用于传输消息。完整存储库队列管理器自身拥有指向彼此的集群发送方通道。
它们使用这些通道以就集群状态的更改进行相互通信。 队列管理器的 CLUSSDR 通道定义指向哪个完整存储库不是很重要。在进行了最初的接触之后,会根据需要自动定义更多的集群队列管理器对象,以便队列管理器可将集群信息发送至每个完整存储库并将消息发送至每个队列管理器。

集群接收方
集群接收方(CLUSRCVR)通道定义用来定义通道接收端,集群队列管理器可通过它从集群中的其他队列管理器接收消息。集群接收方通道还可传送有关集群的信息(发往存储库)。
通过定义集群接收方通道,该队列管理器对其他集群队列管理器表示它可用于接收消息。每个集群队列管理器至少需要有一个集群接收方通道。有关更多信息,请参阅《队列管理器集群》。

对于每个通道,您必须定义两端以便获取通道每一端的通道定义。通道的两端必须是兼容类型。
您可使用下列通道定义的组合:

* 发送方 - 接收方
* 服务器 - 接收方
* 请求方 - 服务器
* 请求方(需要监听器) - 发送方(回调)
* 集群发送方 - 集群接收方

消息通道代理程序

您创建的每个通道定义都属于特定队列管理器。队列管理器可具有同一类型或不同类型的几个通道。通道的每一端是一个程序,即消息通道代理程序(MCA)。在通道的一端,调用方 MCA 从传输队列获取消息并通过通道发送它们。在通道的另一端,响应方 MCA 接收这些消息并将它们传递至远程队列管理器。
调用方 MCA 可与发送方通道、服务器通道或请求方通道关联。响应方 MCA 可与消息通道的任何类型关联。

MQI 通道

MQI 通道可以是下列其中一个类型:
服务器连接
服务器连接通道是双向 MQI 通道,用于将 WebSphere MQ 客户机连接至 WebSphere MQ 服务器。服务器连接通道是通道的服务器端。

客户机连接
客户机连接通道是双向 MQI 通道,用于将 WebSphere MQ 客户机连接至 WebSphere MQ 服务器。MQ 资源管理器还使用客户机连接来连接至远程队列管理器。客户机连接通道是通道的客户机端。当您创建客户机连接通道时,在主管队列管理器的计算机上创建一个文件。然后,您必须将该客户机连接文件复制到 WebSphere MQ 客户机计算机。

监听器

侦听器是一个 WebSphere® MQ 进程,它用来侦听与队列管理器的连接。MQ 资源管理器中的每个侦听器对象都表示一个侦听器进程;但是,如果从命令行启动侦听器进程,那么在 MQ 资源管理器中此侦听器不能由侦听器对象表示。因此,要从 MQ 资源管理器管理侦听器进程,请在 MQ 资源管理器中创建侦听器对象。当您在 MQ 资源管理器中启动侦听器对象时,侦听器进程也会启动。

在 WebSphere MQ 中提供了多种不同类型的侦听器,这取决于消息通道代理程序 (MCA) 通过消息通道用来发送和接收消息的传输协议:
* LU6.2
* TCP/IP
* NetBIOS
* SPX

进程

进程定义包含应用程序的信息,此应用程序作为队列管理器上的触发器事件的响应而启动。当您在队列上启用触发时,您可创建进程定义并将它与此队列关联。每个队列可指定不同的进程定义,或几个队列可共享同一个进程定义。如果您创建进程定义,队列管理器将从此进程定义中抽取信息并将其放置到触发器消息中以供触发器监视器使用。
如果要触发通道的启动而不是应用程序的启动,那么您不需要创建进程定义,因为可使用传输队列定义代替。

名称列表

名称列表是包含其他对象名称列表的 WebSphere® MQ 对象。通常,名称列表由诸如触发器监视器之类的应用程序使用,在这些应用程序中,名称列表用来标识一组队列,或者名称列表与队列管理器集群配合使用,以维护由多个 WebSphere MQ 对象引用的集群的列表。名称列表还用于维护认证信息对象的列表,这些认证信息对象包含连接至 LDAP 服务器的认证信息。

通信信息对象

WebSphere® MQ 多点广播提供低等待时间、高扇出和可靠的多点广播消息传递。需要通信信息 (COMMINFO) 对象才能使用多点广播传输。
多点广播比传统的单点广播发布/预订消息传递更有效,因为它可以扩展至较大量的订户,而不会对性能产生不利影响。WebSphere MQ 使用应答、否定应答和序号来支持可靠的多点广播消息传递,以实现高扇出的低等待时间消息传递。
WebSphere MQ 多点广播公平传递支持几乎同时的传递,从而确保不偏向任何接收方。WebSphere MQ 多点广播使用网络来传递消息,因此无需发布/预订引擎对数据进行扇出。将主题映射至组地址之后,就不需要队列管理器,因为发布者和订户可以采用对等方式运作。该过程允许减少队列管理器服务器上的负载,而队列管理器服务器将不再是潜在的故障点。

触发器监视器

触发器监视器是一个应用程序,它在发生触发器事件时处理放在启动队列上的触发器消息。
如果触发队列并发生了触发器事件,那么队列管理器会将触发器消息发送至启动队列。触发器监视器读取触发器消息并根据触发器消息中的数据执行适当的操作。通常,此操作将启动某些其他应用程序以处理导致生成触发器消息的队列。从队列管理器的角度来看,触发器监视器没有任何特殊的地方,它只是读取来自队列(启动队列)的消息的另一个应用程序。
当您启动了触发器监视器之后,它仅继续监视指定的启动队列。您不能直接停止触发器监视器。当您停止触发器监视器的队列管理器时,触发器监视器也会停止。

通道启动程序

通道启动程序是一个应用程序,它在发生触发器事件时处理放在启动队列上的触发器消息。通道启动程序是特殊类型的触发器监视器,它启动通道而不是启动应用程序。
如果触发队列并发生了触发器事件,那么队列管理器会将触发器消息发送至启动队列。通道启动程序处理此触发器消息并启动通道。从队列管理器的角度来看,通道启动程序没有任何特殊的地方,它只是从队列(启动队列)读取消息的另一个应用程序。
因为通道启动程序只是特殊类型的触发器监视器,所以当您启动了通道启动程序时,它只会继续监视指定的启动队列。您不能直接停止通道启动程序。当您停止通道启动程序的队列管理器时,通道启动程序也会停止。
您也不能创建或删除通道启动程序。当创建或删除了通道启动程序的队列管理器时,就会创建或删除通道启动程序。

定制服务

定制服务是您创建以便自动运行命令的服务。定制服务存储在这些服务所属的队列管理器上的服务文件夹中。您可指定在服务启动和停止时运行的命令和其他选项。您可自动执行服务以在队列管理器启动时启动并运行命令

集群

集群是两个或更多队列管理器的组,这些队列管理器在逻辑上是关联的并可在彼此之间共享信息。任何队列管理器都可对同一集群中的任何其他队列管理器发送消息而无需设置特定的通道定义、远程队列定义或传输队列,这是因为所有这些信息都保留在存储库中,此集群中的所有队列管理器都对此存储库拥有访问权。可以实现负载均衡、互为热备。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值