首页 > 代码库 > IBM WebSphere MQ 相关概念
IBM WebSphere MQ 相关概念
IBM WebSphere MQ 基本概念
基本概念
1、队列管理器
队列管理器,顾名思义,就是管理消息队列的,它可以确保队列中的消息发送到正确的接收队列中,或者将消息传递至另外一个队列管理器中。队列管理器为每一个调用或者命令生成合适的完成代码。
队列管理器执行的任务有:
- 启动通道
- 处理 MQI 调用
- 创建、删除或改变队列和通道定义
- 运行命令服务器以处理 MQSC 命令
2、MQ 消息队列
从数据结构的知识知道,Queue是队列,是一个线性容器。MQ(Message Queue)就是存放消息的容器。编程中主要是做的工作是将消息放到队列中,或者从队列中检索出有用的消息。
队列的分类
队列类型 | 描述 |
---|---|
本地队列 | 本地队列是队列以及与此队列关联的一组消息的定义。主管队列的队列管理器在其本地队列中接收消息。 |
传输队列 | 传输队列是特殊类型的本地队列。当队列管理器将消息发送至远程队列管理器上的队列时,传输队列在本地存储此消息,直到远程队列管理器上的队列可用。要创建传输队列,创建一个本地队列并将其用法属性更改为“传输”。 |
远程队列定义 | 远程队列定义是属于另一个队列管理器的队列的本地队列管理器上的定义。要将消息发送至远程队列管理器上的队列,发送方队列管理器必须具有目标队列的远程定义。 |
别名队列 | 别名队列实际上不是队列;它们是现有队列的附加定义。您创建指向实际本地队列的别名队列定义,但可以用与本地队列(基本队列)不同的名称来命名别名队列定义。这表示您可更改应用程序使用的队列而无需更改此应用程序,您只需创建指向新的本地队列的别名队列定义。 |
模型队列 | 模型队列是您想让队列管理器根据需要动态创建的队列的模板。当应用程序尝试将消息放置到模型队列时,队列管理器将动态地创建与此模型队列同名的本地队列。以此方式创建的队列既可以是临时队列也可以是永久队列。 |
集群队列 | 集群队列是在集群中已共享的队列,这样的话,此集群中的所有队列管理器可使用集群通道在此队列放置和获取消息。 |
共享队列 | 仅适用于 z/OS®。共享队列是拥有共享的队列共享组处置的队列。队列共享组中的所有队列管理器都可在此队列放置和获取消息而无需活动通道。只有本地队列可拥有共享处置。 |
组定义队列 | 仅适用于 z/OS。组队列是拥有组的队列共享组处置的队列。队列共享组中的每个队列管理器都有一个该队列的副本(拥有副本处置)存储在其他们自己的页集中。本地队列、远程队列、别名队列和模型队列可拥有组处置。 |
3、主题
主题是用于标识发布的内容。也就是说,根据主题就可以知道发的是什么内容。就和文章一样,根据文章的标题,就知道文章说的什么内容。
主题是用于描述消息标题的字符串。作为定订阅者,可以使用通配符指定主题以查找需要的消息。
主题的长度最长为10240个字符的字符串组成。
主题是发布/预订系统中成功传递消息的关键。发布者为每条消息分配一个主题,而不是在每条消息中包含一个特定目标地址。队列管理器使该主题与一组已预订该主题的订户匹配,并将消息传递至其中每个订户。
假如我们把主题作为类别,就好理解了:把消息传递理解为报纸的订阅,或者咨询的订阅。我们启动【今日头条】,有很多可供选择的类别:【推荐】、【热点】、【地区】、【社会】、【世界杯】、【娱乐】、【科技】、【汽车】、【体育】、【财经】、【军事】、【国际】、【段子】、【趣图】、【数码】、【美女】、【美文】... 。这些就是咨询(消息)的类别(主题)。
订阅者设置好订阅的主题。消息队列中如果有这样的咨询信息,就会推送到手机上。消息推送时只会推送你订阅的主题,没有订阅的主题,是不会推送给你的。
- 主题字符串可以包含 Unicode 字符集中的任何字符,其中包括空格字符。然而,有些字符具有特殊含义。联机 IBM® WebSphere® MQ 信息中心内的通配方案中描述了这些字符:加号 (+)、井号 (#)、星号 (*) 和问号 (?)。
- 主题字符串区分大小写,虽然空字符不会导致发生错误,但请勿在主题字符串中使用空字符。有关主题字符串的最新信息,请参阅联机 IBM WebSphere MQ 信息中心内的 Using topic strings。
4、集群主题
对于集群还不了解,往后补上。
5、预订
预订是一个记录,它包含关于订户感兴趣并希望接收关于其信息的主题的信息。因此,预订信息确定哪些发布内容会转发至订户。订户可以接收来自不同发布者的信息,并且也可以将他们接收的信息发送至其他订户。
发布的信息将在 WebSphere® MQ 消息中发送,信息的题目由一个主题进行标识。发布者在发布信息时指定主题,而订户则指定它要接收的发布所针对的主题。将仅对订户发送关于它预订的那些主题的信息。
如果对前面说的主题理解,这里就很容易理解的。
WebSphere MQ V7 队列管理器使用发布/预订引擎来控制发布者与订户之间的交互。发布/预订引擎接收来自发布者的消息和来自订户的预订请求(针对主题范围)。发布/预订引擎的工作是将发布的数据传递至目标订户。
消息的传输路径:
发布者——>发布/预订引擎——>订阅者
6、发布
发布是由应用程序发送至发布/预订引擎的消息。然后,发布/预订引擎将消息发送至任何已预订接收这些消息的应用程序。发布/预订引擎可根据发布中包含的信息类型以不同方式处理它接收的发布。
发布类型:状态发布、事件发布。
- 状态发布
- 状态发布包含关于某件事的当前状态的信息,如股票价格或足球比赛的当前比分。当发生某件事(如股票价格更改或足球比分更改)时,将不再需要先前的状态信息,因为它已被新的信息取代。
- 订户应用程序希望在启动时接收状态信息的当前版本,并希望在状态更改时接收到新的信息。
- 事件发布
- 事件发布包含关于发生的个别事件的信息,如购入某支股票或将球射进特定球门。每个事件独立于其他事件。
- 订户希望在事件发生时接收关于事件的信息。
7、通道
WebSphere MQ提供了两种通道,类似于网络通道(单通道、全通道)
消息通道:这是一种单向通道。它是两个队列管理器之间的单向通信链路。
WebSphere使用的是消息通道在队列直接进行消息传送。如果要双向通讯,就要设置两个通道。例如两个对了管理器:QM_A与QM_B,单通道可能是QM_A向QM_B发送消息,不能是QM_B发送消息。例如咨询接收时:只能是RSS服务器将咨询(消息)发送给用户。用户不能将消息咨询(发送)给RSS服务器。这就是最常见的消息通道案例。
如果要实现QM_A——>QM_B,并且QM_B——>QM_A,那么就需要在队列管理之间建立两个通道。
消息通道定义的类型:
消息通道包含通道的两端。
消息通道定义只是通道的一端。
消息通道定义类型 | 描述 |
---|---|
发送方 | 发送方通道是队列管理器用来将消息发送至其他队列管理器的消息通道。要使用发送方通道来发送消息,还必须在另一队列管理器上创建与此发送方通道同名的接收方通道。如果正在实现“回调”机制,那么还可以将发送方通道与请求方通道一起使用。 |
服务器 | 服务器通道是队列管理器用来将消息发送至其他队列管理器的消息通道。要使用服务器通道来发送消息,还必须在另一队列管理器上创建与此服务器通道同名的接收方通道。您还可将服务器通道与请求方通道一起使用。在此情况下,在通道另一端的请求方通道定义请求要启动的服务器通道定义。服务器将消息发送至请求方。只要服务器知道对方通道的连接名称,它还可启动通信。 |
接收方 | 接收方通道是队列管理器用来从其他队列管理器接收消息的消息通道。要使用接收方通道来接收消息,还必须在另一队列管理器上创建与此接收方通道同名的发送方通道或服务器通道。 |
请求方 | 请求方通道是队列管理器用来将消息发送至其他队列管理器的消息通道。要使用请求方通道发送消息,还必须在另一队列管理器上创建发送方通道(如果您正在实现回调机制的话)或服务器通道。 |
集群发送方 | 集群发送方(CLUSSDR)通道定义用来定义通道发送端,集群队列管理器可通过它将集群信息发送至其中一个完整存储库。集群发送方通道用于告知存储库有关队列管理器状态的任何更改,例如,添加或除去队列。它还用于传输消息。完整存储库队列管理器自身拥有指向彼此的集群发送方通道。它们使用这些通道以就集群状态的更改进行相互通信。队列管理器的 CLUSSDR 通道定义指向哪个完整存储库不是很重要。在进行了最初的接触之后,会根据需要自动定义更多的集群队列管理器对象,以便队列管理器可将集群信息发送至每个完整存储库并将消息发送至每个队列管理器。 |
集群接收方 | 集群接收方(CLUSRCVR)通道定义用来定义通道接收端,集群队列管理器可通过它从集群中的其他队列管理器接收消息。集群接收方通道还可传送有关集群的信息 - 发往存储库的信息。通过定义集群接收方通道,该队列管理器对其他集群队列管理器表示它可用于接收消息。每个集群队列管理器至少需要有一个集群接收方通道。 |
MQI通道:它是双向通道,用于将应用程序(MQI 客户机)连接至服务器上的队列管理器。WebSphere MQ 使用 MQI 通道在 MQI 客户机和队列管理器之间传送 MQI 调用和响应。
您可使用下列通道定义的组合:
- 发送方 - 接收方
- 服务器 - 接收方
- 请求方 - 服务器
- 请求方 - 发送方(回调)
- 集群发送方 - 集群接收方
8、侦听器
WebSphere MQ 资源管理器中的每个侦听器对象都表示一个侦听器进程;但是,如果从命令行启动侦听器进程,那么在 WebSphere MQ 资源管理器中此侦听器不能由侦听器对象表示。因此,要从 WebSphere MQ 资源管理器管理侦听器进程,请在 WebSphere MQ 资源管理器中创建侦听器对象。当您在 WebSphere MQ 资源管理器中启动侦听器对象时,侦听器进程也会启动。
MQI 通道类型 | 描述 |
---|---|
服务器连接 | 服务器连接通道是双向 MQI 通道,用于将 WebSphere MQ 客户机连接至 WebSphere MQ 服务器。服务器连接通道是通道的服务器端。 |
客户机连接 | 客户机连接通道是双向 MQI 通道,用于将 WebSphere MQ 客户机连接至 WebSphere MQ 服务器。WebSphere MQ Explorer还使用客户机连接来连接至远程队列管理器。客户机连接通道是通道的客户机端。当您创建客户机连接通道时,在主管队列管理器的计算机上创建一个文件。然后,您必须将该客户机连接文件复制到 WebSphere MQ 客户机计算机。 |
9、通信信息对象Comminfo
WebSphere® MQ 多点广播提供低等待时间、高扇出和可靠的多点广播消息传递。
要想使用多点广播传输,需要配置通信信息对象(COMMINFO)。
WebSphere的多点广播介绍:
多点广播比传统的单点广播发布/预订消息传递更有效,因为它可以扩展至较大量的订户,而不会对性能产生不利影响。WebSphere MQ 使用应答、否定应答和序号来支持可靠的多点广播消息传递,以实现高扇出的低等待时间消息传递。
WebSphere MQ 多点广播公平传递支持几乎同时的传递,从而确保不偏向任何接收方。由于 WebSphere MQ 多点广播使用网络来传递消息,因此无需发布/预订引擎对数据进行扇出。将主题映射至组地址之后,就不需要队列管理器,因为发布程序和订户可以采用对等方式运作。该过程允许减少队列管理器服务器上的负载,而队列管理器服务器将不再是潜在的故障点。
- LU6.2
- TCP/IP
- NetBIOS
- SPX
10、队列共享组
队列共享组是可访问相同共享队列的一组队列管理器。队列共享组的每个成员对同一组共享队列都具有访问权。