百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

IBM MQ基本概念及使用场景

mhr18 2024-12-01 08:58 23 浏览 0 评论

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的通道名字需要相同。

相关推荐

使用 Docker 部署 Java 项目(通俗易懂)

前言:搜索镜像的网站(推荐):DockerDocs1、下载与配置Docker1.1docker下载(这里使用的是Ubuntu,Centos命令可能有不同)以下命令,默认不是root用户操作,...

Spring Boot 3.3.5 + CRaC:从冷启动到秒级响应的架构实践与踩坑实录

去年,我们团队负责的电商订单系统因扩容需求需在10分钟内启动200个Pod实例。当运维组按下扩容按钮时,传统SpringBoot应用的冷启动耗时(平均8.7秒)直接导致流量洪峰期出现30%的请求超时...

《github精选系列》——SpringBoot 全家桶

1简单总结1SpringBoot全家桶简介2项目简介3子项目列表4环境5运行6后续计划7问题反馈gitee地址:https://gitee.com/yidao620/springbo...

Nacos简介—1.Nacos使用简介

大纲1.Nacos的在服务注册中心+配置中心中的应用2.Nacos2.x最新版本下载与目录结构3.Nacos2.x的数据库存储与日志存储4.Nacos2.x服务端的startup.sh启动脚...

spring-ai ollama小试牛刀

序本文主要展示下spring-aiollama的使用示例pom.xml<dependency><groupId>org.springframework.ai<...

SpringCloud系列——10Spring Cloud Gateway网关

学习目标Gateway是什么?它有什么作用?Gateway中的断言使用Gateway中的过滤器使用Gateway中的路由使用第1章网关1.1网关的概念简单来说,网关就是一个网络连接到另外一个网络的...

Spring Boot 自动装配原理剖析

前言在这瞬息万变的技术领域,比了解技术的使用方法更重要的是了解其原理及应用背景。以往我们使用SpringMVC来构建一个项目需要很多基础操作:添加很多jar,配置web.xml,配置Spr...

疯了!Spring 再官宣惊天大漏洞

Spring官宣高危漏洞大家好,我是栈长。前几天爆出来的Spring漏洞,刚修复完又来?今天愚人节来了,这是和大家开玩笑吗?不是的,我也是猝不及防!这个玩笑也开的太大了!!你之前看到的这个漏洞已...

「架构师必备」基于SpringCloud的SaaS型微服务脚手架

简介基于SpringCloud(Hoxton.SR1)+SpringBoot(2.2.4.RELEASE)的SaaS型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss防跨站攻击、...

SpringCloud分布式框架&amp;分布式事务&amp;分布式锁

总结本文承接上一篇SpringCloud分布式框架实践之后,进一步实践分布式事务与分布式锁,其中分布式事务主要是基于Seata的AT模式进行强一致性,基于RocketMQ事务消息进行最终一致性,分布式...

SpringBoot全家桶:23篇博客加23个可运行项目让你对它了如指掌

SpringBoot现在已经成为Java开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通...

开发好物推荐12之分布式锁redisson-sb

前言springboot开发现在基本都是分布式环境,分布式环境下分布式锁的使用必不可少,主流分布式锁主要包括数据库锁,redis锁,还有zookepper实现的分布式锁,其中最实用的还是Redis分...

拥抱Kubernetes,再见了Spring Cloud

相信很多开发者在熟悉微服务工作后,才发现:以为用SpringCloud已经成功打造了微服务架构帝国,殊不知引入了k8s后,却和CloudNative的生态发展脱轨。从2013年的...

Zabbix/J监控框架和Spring框架的整合方法

Zabbix/J是一个Java版本的系统监控框架,它可以完美地兼容于Zabbix监控系统,使得开发、运维等技术人员能够对整个业务系统的基础设施、应用软件/中间件和业务逻辑进行全方位的分层监控。Spri...

SpringBoot+JWT+Shiro+Mybatis实现Restful快速开发后端脚手架

作者:lywJee来源:cnblogs.com/lywJ/p/11252064.html一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置...

取消回复欢迎 发表评论: