消息中间件并非那般神秘莫测,不少人初次接触 MQ 时,便被林林总总、形形色色的术语搅得晕头转向。实际上,它的作用是替你省去亲自动手写通信代码耗费的时间,使得不同的系统之间能够切实无误且平稳顺畅地传输数据。你无需忧心网络中断会是怎样一种状况,亦不用理会对方服务器出现故障该如何是好,此类种种情况,MQ 皆已妥善处理妥当。
于Windows系统之上安装MQ着实是最为省心的,将下载安装包之后双击予以运行,点好多下下一步便装载完成了。IBM的MQ系列在Windows平台之上所具备的安装程序做得相对较为友好,大体上不会遭遇到什么阻碍,新手拿来进行练手是最为合适不过的。
Linux系统的安装有点麻烦,其使用rpm -ivh命令安装,要先安装依赖包,而后再安装主程序。AIX系统的安装也是如此情况较为麻烦,它使用installp命令,这两种系统在安装的时候都要注意用户权限,一般而言得使用root账号才能够安装成功。
在 MQ 系统当中,队列管理器能够被视作统领整个系统的关键角色,它承担着统筹你所有消息服务的重任。它的职责包括对队列进行创建以及管理工作,其工作范畴内涵盖着处理客户端连接需求,并且它还把控着消息存储方式、消息传输方式以及消息删除时机等相关事宜,在一个系统环境里,能够同时运行多个队列管理器的,它们之间相互处于独立状态,各自运行互不干扰,各自的运行情况彼此之间不会产生影响。
在 2025 年的某个电商大促时段,他们运用了三个队列管理器用于分别处理订单、支付与库存消息。即便订单队列管理器处于压力极大几近爆表的状态,支付以及库存的消息依旧能够正常地流转,而这便是队列管理器隔离所带来的好处呀!
首先,消息指的是你系统当中需要去传递的那些信息,举例来说,像用户下单所产生的订单数据,还有财务系统需要进行处理的报销单,以及库存系统需要更新的商品数量这类信息。其次,消息是分为两个部分的,一部分是消息头,另一部分是消息体。消息头里面携带着例如优先级、过期时间之类的属性,而消息体里面装载着你实际的业务数据。
消息存在两种存法,一种是永久写硬盘,即便掉电重启数据依旧留存,另一种是非永久放内存,虽速度快但重启便消失,像股票行情这类丢了无妨的采用非永久存法,而银行转账这种必须可靠的则要运用永久消息存法。
队列乃是存放消息之处所,类似快递柜,生产方将消息放置其中,消费方待有空时前来取出。本地队列最为常用,传输队列专为跨系统传递消息而设,死信队列收纳那些无人处理的消息。
某物流公司于2026年初进行系统改造时,给每个城市分拨中心各建了独立队列,北京队列堵塞不会影响上海发件,处理程序忙不过来之际消息会在队列中等待,不会丢失且不会混乱。
程序 A 借助 MQ 接口来发出消息,MQ 接收消息后查看目标地址处于何处,若目标地址位于同一台机器上,便直接投放至目标队列,若目标地址在其他服务器,MQ 会将消息进行包装并通过网络传送过去,在那边接收消息后放入相应队列。
程序 B 无需持续盯着队列瞧,它能够注册一个监听,一旦有消息到来便会自动唤醒进行处理。某银行核心系统每日有着上亿笔交易便是如此运行的,程序 A 仅仅负责将交易信息抛给 MQ,程序 B 缓缓地从队列里把它取出来予以处理,两边互相之间不会产生影响。
常用的是点对点模式,此模式中,一条消息仅有一个消费者能够获取,一旦获取,消息便不复存在。发布订阅模式如同公众号那般,一条消息会被群发给所有订阅者,这种模式适宜用于广播通知。
在 2025 年的时候,针对某政务系统进行改造工作,对于社保变更采用点对点的方式,以保证每个变更仅仅被处理一次。而政策公告则运用发布订阅的形式,使得所有那些相关的系统都能够接收到通知。要是选错了模式,那么要么会出现消息被重复处理的情况,要么会出现本该收到消息的系统却没有收到的状况,所以在设计的最初阶段就必须要考虑清楚。