phoben 发表于 2023-12-29 21:41:03

活字格无缝对接RabbitMQ消息队列教程

本帖最后由 phoben 于 2024-1-16 16:00 编辑




不知道大家对这只小兔子熟不熟悉,这是一个很出名的消息队列开源程序。
如果不了解的格友,可以看下下面简介,知道这是什么可以跳到中间部分

什么是MQ?
消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。

MQ是干什么用的?
应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等...

MQ衡量标准
服务性能、数据存储、集群架构

这是ChatGPT打的一个比喻,方便大家理解:




简单说就是大家伙都把任务(消息)往RabbitMQ服务里丢,然后由它来根据我们实现定义的规则进行分发。活字格可以通过插件订阅某个列队,当有消息时,就会自动推送到服务器,执行实现定义好的逻辑;至于消息该分配到哪个列队呢? RabbitMQ提供了好几种路由的方法,我们通过路由键(RoutingKey)来定义,非常的灵活。]
RabbitMQ中有几个很重要的概念:
生产者(Producer):产生消息的一方
消费者(Consumer):订阅接收消息的一方
虚拟机(Vhost):每个虚拟机相当于一个小的RabbitMQ服务,默认自带一个
交换机(Exchange):负责将消息分配给不同的列队
队列(Queue):负责储存和下发消息
消息(Message):消息内容



static/image/hrline/line1.png

进入正文

这几天在研究如何给活字格接上消息列队
帮助我们在一些中大型项目里,对高并发、多任务、协同处理等场景提供更强大的支持。
经过不懈努力,终于将消息列队成功与活字格进行了无缝对接
通过安装“消息队列插件套装”你可以获得完整的管理工具
能方便的对列队进行管理、订阅
在使用插件之前
我先给大家普及下如何在服务器上安装RabbitMQ服务。

第一步
下载安装文件(免费)

    下载地址:官方下载地址
    我这里用Windows系统举例,



(下载这里的2个安装文件)



(得到RabbitMQ的安装文件和Erlang安装文件)



第二步安装RabbitMQ


1.安装Erlang,这里没什么好说的,直接安装,啥也不改。

   

安装完,查一下系统变量是否有下面这个
   


2.安装RabbitMQ,也是一路next就行。
    到安装路径,进入cmd
   
   输入下方命令,安装下web管理页面
rabbitmq-plugins enable rabbitmq_management
   
   在sbin目录下,双击rabbitmq-server.bat启动脚本,重启RabbitMQ服务。   打开任务管理器,可以看到RabbitMQ服务正在运行
   
登录成功后,进入下面页面即代表安装成功,至此大功告成!

安装完成
static/image/hrline/line1.pnghttps://gcdn.grapecity.com.cn/static/image/hrline/line1.pnghttps://gcdn.grapecity.com.cn/static/image/hrline/line1.pnghttps://gcdn.grapecity.com.cn/static/image/hrline/line1.pnghttps://gcdn.grapecity.com.cn/static/image/hrline/line1.pnghttps://gcdn.grapecity.com.cn/static/image/hrline/line1.pnghttps://gcdn.grapecity.com.cn/static/image/hrline/line1.pnghttps://gcdn.grapecity.com.cn/static/image/hrline/line1.png

其实RabbitMQ还支持集群部署
也就是多个服务器同时重复上述步骤
将他们配置成一个集群
不过不是特别大的项目,一个足够了。

至此,RabbitMQ就安装好了
部署的这台服务器可以同时部署活字格
也可以另外部署专门的服务器。
如果数据量和并发并不是特别高
可以在一台上部署即可。

我发布了一个体验地址,匿名即可使用大家可以发送消息感受下消息列队推送的丝滑和快感体验地址

phoben 发表于 2023-12-29 22:49:30

RabbitMQ队列概念

本帖最后由 phoben 于 2024-1-3 13:57 编辑

该插件为一个套装,封装及优化了大名鼎鼎的消息列队开源服务RabbitMQ。内涵14款插件,可以从各个方面无缝管理RabbitMQ的连接、交换机、队列、消息等。
相信还是有一些小伙伴没有接触过MQ队列,估计会问:MQ队列到底干嘛的?它能帮我解决啥问题?感觉没有它对我的项目也能做?关于这些问题,我让GPT来回答吧:
https://mallcdn.grapecity.com.cn/3490e41ead9d783fb5056826fb415416https://mallcdn.grapecity.com.cn/5619191dfc67597427f718a53cf8b8b6

RabbitMQ有几个重要的概念,分别是:对象概念:连接(Connection)、节点(Node)、虚拟机(Vhost)、交换机(Exchange)、通道(Channel)、队列(Queue)、消息(Message)角色概念:生产者(Producer)、消费者(Consumer)数据概念:请求头(Header)、请求内容(Body)、参数(Properties)
通过一张图可以看清他们的关系:https://mallcdn.grapecity.com.cn/cd5346053558001e4b95217b5568830c
可以看到中间的RabbitMQ掌管了整个消息的队列和发布,发布者和订阅者(也称消费者)不关心具体过程当多个服务器不停想RabbitMQ发布新的消息(任务)时,它始终都能很好的按照预定规则,将每条消息准确送达到消费者手中。好了,关于消息列队的科普就说到这儿,如果你还不是很懂MQ列队的作用及用法,可以参考网络相关文章。
相关连接:超详细的RabbitMQ入门,看这篇就够了!

phoben 发表于 2023-12-29 22:50:24

插件使用篇

本帖最后由 phoben 于 2024-1-3 13:56 编辑

假设你已经成功的部署好了RabbitMQ,那么恭喜你,你可以使用插件来轻松的管理它。安装好插件后,在活字格设计器内的服务端命令下拉框里,就可以看到整个插件包的内容
https://mallcdn.grapecity.com.cn/92889a51925c1866341cba3bf4d77bf7
插件看起来多,但不是每一个我们都需要频繁的用,大部分是用来做配置的如果你对RabbitMQ熟悉,其实你也可以完全自己在它的web管理后台来配置,可能更加方便。这里将插件分为几个类,让大家更好了解它的作用:

类别包含插件作用描述
服务器连接conneciton创建服务器连接删除服务器连接获取所有连接名用来与Rabbit MQ服务器建立连接,可连接本机/内网/外网/云服务器等等...
交换机管理Exchange
创建交换机删除交换机用来创建或删除一个交换机Exchange交换机是Rabbit MQ里的重要概念,它负责将消息分配到不同列队。
队列管理Queue创建一个队列删除队列清空队列用来创建或删除一个队列队列是用来存放待发布的消息的,交换机通过规则将消息存放到队列,消费者通过订阅队列拿到消息
绑定Binding绑定交换机与队列
将交换机与队列按一定规则进行绑定
通道Channel创建连接通道关闭连接通道这是消费者与服务器通信的通道,也可以理解为信道,它包括一些独特的配置,来定义本次通信的规则
订阅开始订阅队列停止订阅队列这是最常用也是最核心的功能,它用来订阅或取消订阅一个队列,当你订阅后,有新的消息会主动的推送过来从而触发我们实现编排好的处理命令

一般来说,开启web管理插件后,在服务器的15672端口会开放一个web系统,登录即可查看。

https://mallcdn.grapecity.com.cn/d457e9bd487260ee74249874290075cf订阅列队的方法如果你已经完成了交换机、列队的创建和绑定,你可以直接使用插件发送一条消息来测试。
第1步:连接服务器连接后会得到一个“连接标识”,记得保存哦!
https://mallcdn.grapecity.com.cn/1ca2fffb034c76499cf34d6251410397

第2步:订阅消息使用第一步的“连接标识”和你要订阅的“队列名称”来完成订阅。订阅成功后,会返回一个“消费者标识”,取消订阅的时候需要用到。
https://mallcdn.grapecity.com.cn/54970c082254e2b8bc681f25869a0b65这是核心中的核心了,我们必须定义消息到达后,如何处理该消息?有了这些数据,我们就可以任意编辑需要处理消息的逻辑了

https://mallcdn.grapecity.com.cn/5c6a2d713669a00baca31081e8024c32

PS:这样做的好处显而易见,我收到了一条消息,但是我没有处理好它,如果这时RabbitMQ以为我处理完了,直接删掉了该消息,那我再也没有机会去处理了,也间接的导致该条消息的丢失。

第3步:发送消息剩下的就是发布消息了,只需要提供消息内容即可,其他配置均可默认即可;消息发布后,会返回一个“唯一消息标识”用于和你的业务数据形成关联;
https://mallcdn.grapecity.com.cn/10fde7abc0ceb1d293d4d152eb5d6eee
发布消息和订阅消息,都可以很多服务器一起参与,比如说:你有三台服务器都部署了活字格应用,他们可能都是不同应用,但是不妨碍他们都朝RabbitMQ发布消息、订阅消息。

紫色幽魂 发表于 2023-12-29 23:05:50

学习下

dlxubo 发表于 2023-12-31 08:41:50


站位

nsc117 发表于 2023-12-31 10:44:47

板凳坐等更新,很实用的插件

137294886 发表于 2024-1-1 11:56:14

学习下

dlxubo 发表于 2024-1-1 14:00:12

:nbtz5:还没有后续

phoben 发表于 2024-1-1 14:20:36

dlxubo 发表于 2024-1-1 14:00
还没有后续

amtath 发表于 2024-1-1 20:31:46

:jy74a::hjyzw:
页: [1] 2
查看完整版本: 活字格无缝对接RabbitMQ消息队列教程