百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

IBM MQ基本概念及使用场景

bigegpt 2025-04-27 12:35 4 浏览

IBM MQ基本概念及使用

IBM MQ是IBM公司推出的一款通信中间件软件。

  1. 优点

IBM MQ具有如下优点:

1)仅传递一次

MQ(消息队列)可靠性的核心在于一次且仅限一次传递,这使您能够确信必将传递消息。

2)异步消息传递

在异步消息传递环境中,MQ(消息队列)可充当应用之间的减震器。如果存在网络或应用中断,那么它会将消息保存在特殊队列中,直到所有内容都运行为止。

3)强大的保护功能

MQ(消息队列)的传输层安全性 (TLS) 可保护线上的消息,而内置的访问控制则可在目标队列上保护这些消息。

4)连接

通过在不同平台上作为应用之间的消息传递中心,MQ(消息队列)几乎可在任何地方连接所有内容,减少了集成时间和成本,并能够可靠地移动消息。

5)保护

设计成就安全 - 内置高可用性和灾难恢复能力 - MQ(消息队列)可通过细粒度认证和强大的数据加密技术来保护静态数据、动态数据和内存中的数据。

6)简化

由于 MQ(消息队列)可处理连接和消息重试操作,它使开发者能够将时间用在更关键的计划上。它还易于缩放,能够无缝地管理事务量的变化。

  1. 常用概念
  1. 队列管理器

队列管理器是MQ的主要部件,一个队列管理器监听一个端口,里面可以配置监听器,队列,通道,触发器等等功能。一般搭建MQ服务器的第一件事就是新建队列管理器,并指定其接口。

  1. 队列

队列是存放消息的容器,可以理解成一个先入先出的栈。队列分为本地队列、传输队列和远程队列。

3)通道

通道则是两个队列管理器之间的一种单向的点对点的通信连接,消息在通道中只能单向流动。队列管理器之间的通信是通过配置通道来实现 的,通道两侧的队列管理器对这个通道的相关参数应该能对应起来。在通道上可以配置不同的通信协议,这样就使得编程接口与通信协议无关。通道两端的配置必须匹配, 且名字相同,否则无法连通。

通道分为发送方通道、服务器通道、接收方通道、请求方通道、服务器连接通道。

  1. MQ常用协议

AMQP协议 AMQP即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。优点:可靠、通用

MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。 优点:格式简洁、占用带宽小、移动端通信、PUSH、嵌入式系统

STOMP协议 STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息协议,是一种为MOM(Message Oriented Middleware,面向消息的中间件)设计的简单文本协议。STOMP提供一个可互操作的连接格式,允许客户端与任意STOMP消息代理(Broker)进行交互。 优点:命令模式(非topic\queue模式)

XMPP协议 XMPP(可扩展消息处理现场协议,Extensible Messaging and Presence Protocol)是基于可扩展标记语言(XML)的协议,多用于即时消息(IM)以及在线现场探测。适用于服务器之间的准即时操作。核心是基于XML流传输,这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 优点:通用公开、兼容性强、可扩展、安全性高,但XML编码格式占用带宽大

其他基于TCP/IP自定义的协议 有些特殊框架(如:redis、kafka、zeroMq等)根据自身需要未严格遵循MQ规范,而是基于TCP\IP自行封装了一套协议,通过网络socket接口进行传输,实现了MQ的功能。

  1. MQ的通讯模式

1) 点对点通讯:点对点方式是最为传统和常见的通讯方式,它支持一对一、一对多、多对多、多对一等多种配置方式,支持树状、网状等多种拓扑结构。以Queue为通信载体,如下图所示:

2) 多点广播:MQ适用于不同类型的应用。其中重要的,也是正在发展中的是"多点广播"应用,即能够将消息发送到多个目标站点(Destination List)。可以使用一条MQ指令将单一消息发送到多个目标站点,并确保为每一站点可靠地提供信息。MQ不仅提供了多点广播的功能,而且还拥有智能消息分发功能,在将一条消息发送到同一系统上的多个用户时,MQ将消息的一个复制版本和该系统上接收者的名单发送到目标MQ系统。目标MQ系统在本地复制这些消息,并将它们发送到名单上的队列,从而尽可能减少网络的传输量。

3) 发布/订阅(Publish/Subscribe)模式:发布/订阅功能使消息的分发可以突破目的队列地理指向的限制,使消息按照特定的主题甚至内容进行分发,用户或应用程序可以根据主题或内容接收到所需要的消息。发布/订阅功能使得发送者和接收者之间的耦合关系变得更为松散,发送者不必关心接收者的目的地址,而接收者也不必关心消息的发送地址,而只是根据消息的主题进行消息的收发。在MQ家族产品中,MQ Event Broker是专门用于使用发布/订阅技术进行数据通讯的产品,它支持基于队列和直接基于TCP/IP两种方式的发布和订阅。

如下图所示:

4) 群集(Cluster):为了简化点对点通讯模式中的系统配置,MQ提供Cluster(群集)的解决方案。群集类似于一个域(Domain),群集内部的队列管理器之间通讯时,不需要两两之间建立消息通道,而是采用群集(Cluster)通道与其它成员通讯,从而大大简化了系统配置。此外,群集中的队列管理器之间能够自动进行负载均衡,当某一队列管理器出现故障时,其它队列管理器可以接管它的工作,从而大大提高系统的高可靠性。

  1. 5种使用场景
  1. Sender--Receiver模式

原理如下图所示:

创建队列管理器QM1,QM2。

在QM2中创建本地队列QL,如下图:

在QM2中创建接收方通道C_QM1.QM2,如下图:

在QM1中创建传输队列QX,如下图:

在QM1中创建远程队列QR,如下图:

在QM1中创建发送方通道C_QM1.QM2,如下图:

  1. Sender-Requestor模式

原理如下图所示:

创建队列管理器QM1,QM2。

在QM2中创建本地队列QL。

在QM2中创建请求方通道C,如下图所示:

在QM1中创建传输队列QX,创建远程队列QR。

在QM1中创建发送方通道C,如下图所示:

  1. Server-Requester模式

原理如下图所示:

创建队列管理器QM1,QM2。

在QM2中创建本地队列QL,创建请求方通道C。

在QM1中创建传输队列QX,创建远程队列QR。

在QM1中创建服务器通道C,如下图所示:

  1. Server-Receiver模式

原理如下图所示:

创建队列管理器QM1,QM2。

在QM2中创建本地队列QL,创建接收方通道C。

在QM1中创建传输队列QX,创建远程队列QR。

在QM1中创建服务器通道C,如下图:

  1. 多点广播模式

创建队列管理器QM1,QM2。

在QM2中创建本地队列QLA、QLB、QLC,创建接收方通道C。

在QM1中创建传输队列QX,创建远程队列QRA,QRB,QRC,分别指向QM2的QLA、QLB、QLC,创建接收方通道C。

在QM1中创建主题topic,如下图:

在QM1中创建三个预定,都订阅topic,分别指定对应QM1中的三个远程队列,类似下图:

在主题topic中放入测试消息,可在QM2的3个本地队列中看到相同的消息。

注意:以上集中模式中,QM1和QM2的通道名字需要相同。

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...