美文网首页
IBM MQ(一)基本概念

IBM MQ(一)基本概念

作者: 墙角儿的花 | 来源:发表于2023-12-07 16:49 被阅读0次

    基本概念

    队列管理器,负责维护队列、消息、管道、主题、订阅等一系列和消息有关的对象。在分布式系统下,可能存在多个队列管理器。

    消息,消息有三部分组成,应用数据、描述、属性;应用数据是应用自己的数据结构和内容;描述包括一些附加的控制信息,如优先级;属性是由应用定义和赋值的键值对。值得关注的是应用程序可以根据属性来过滤消息。例如在消息监听器中声明选择器,通过属性匹配来过滤自己关心的消息。另外,IBM MQ的消息默认最大长度4M。

    管道,管道是队列管理器之间,队列管理器与客户端(应用程序)之间的逻辑连接。如果要完成这些通信,需要预先将管道在队列管理器中创建出来。队列管理器之间的管道是单向流通,客户端和队列管理器之间的管道是双向传输。和IBM MQ的队列管理器打交道都需要指定所用的管道,尽管通过这种方式规范了构件间的通讯甚至可以规范授权,个人并不是很欣赏这种设计理念,不够简洁。

    队列,队列分为预定义队列和动态队列,预定义队列是需要在队列管理器中由管理员提前创建的队列,动态队列是由应用程序按队列模板临时创建,临时创建的队列是临时队列还是持久队列取决于模板,临时队列在应用程序关闭后队列也随之销毁,适合使用完即释放的场景。尽管队列能够动态创建,但是其依赖管理端维护的队列模板,实质上还是需要在管理端有预先的配置。队列中的消息按FIFO规则先进先出,同时,支持按消息优先级排序。

    队列也分本地队列和远程队列,这个概念是相对于应用程序而言的,应用程序连接的队列管理器所拥有的队列称之为本地队列,与应用程序处于非连接的队列管理所拥有的队列是远程队列。只有本地队列是可以直接发送和获取消息的。如果应用程序希望向远程队列发送消息,需要用到跨队列管理器传输能力。大致过程如:首先在所连接的队列管理器中建一个本地队列,修改设置使其成为用于传输用途的传输队列,然后,再创建远程队列在本地队列管理器中的定义,指定远程队列和传输队列之间的绑定关系。那么应用程序往传输队列发送消息,队列管理器会自动将消息发送到远程队列。

    主题,主题涉及两类概念,主题字符串和主题对象,前者是代表主题的字符串标识,可以用/分隔,形成一个主题树,子主题继承父主题的属性。主题对象是IBM MQ提供的一种为主题维护预定义属性的数据对象,可以为每个主题节点定义主题对象。需要说明的是,主题和主题字符串不需要在IBM MQ中预定义,主题字符串可以由应用程序在发布或订阅时指定,对应用来说相对灵活一些。

    订阅,订阅是对某一主题的关注,有持久和非持久之分。持久订阅从创建订阅那个时刻起,无论订阅者是否在线,主题的消息会持续向该订阅投递一份拷贝。而非持久订阅只有在订阅者在线时,才能收到主题中的消息,下线后再上线,并不会得到离线时的消息。定义订阅时是可以指定消息选择器的,也就是说选择器是“订阅”定义的一个属性,队列管理器为该订阅内置创建队列时,不符合要求的消息是不会分发到该订阅,因此,应用程序也就不会收到并不关心的消息。

    相关文章

      网友评论

          本文标题:IBM MQ(一)基本概念

          本文链接:https://www.haomeiwen.com/subject/xdosgdtx.html