引言
消息队列(Message Queue,MQ)是一种在分布式系统中实现应用程序间通信的中间件技术。它的核心作用在于通过异步处理的方式,使得发送消息的应用程序(生产者)与接收消息的应用程序(消费者)解耦,从而提升系统的伸缩性、可靠性以及性能。
在消息队列中,生产者将需要处理的任务封装成消息发送到消息队列中,而消费者则从队列中取出消息进行处理。这样做的好处主要包括:
应用解耦:生产者和消费者之间不直接相互依赖,减少了系统的耦合度。
异步处理:允许非实时处理任务,提高响应速度,改善用户体验。
流量削峰:在高峰期,消息队列可以暂存大量的请求,避免直接压垮后端服务。
负载均衡:消息队列可以根据消费者的处理能力动态分配任务,实现更高效的资源利用。
错峰处理和冗余备份:如果下游系统出现故障,消息队列可以暂时存储消息,待系统恢复后再继续处理;同时,支持消息持久化以防止数据丢失。
RabbitMQ 是一个开源的消息中间件,它基于AMQP(Advanced Message Queuing Protocol,高级消息队列协议)实现。RabbitMQ 由Erlang编写,提供了丰富的特性,包括:
多协议支持:主要支持AMQP,但也提供其他协议如STOMP和MQTT的插件支持。
多消息模型:支持点对点、发布/订阅、路由和主题等多种消息传递模式。
消息持久化:可以设置消息在队列中的持久化,确保在服务器重启时不会丢失重要数据。
集群和高可用性:支持节点间的集群部署,提供高可用性和容错性。
灵活的路由机制:通过交换机(Exchange)来决定如何将消息路由到对应的队列中。
跨语言客户端支持:为Java、Python、Ruby、.NET、PHP、C/C++、Node.js等多种编程语言提供了客户端库,方便各种环境下的开发者集成使用。
低代码技术是一种通过可视化界面和少量编码来快速开发应用程序的方法。它提供了可拖拽的组件和预构建的功能模块,开发者可以通过配置和定制来创建应用。低代码技术能够极大地提高开发效率,降低开发成本,并且无需深入的编程知识。它适用于快速原型开发、企业级应用开发、业务流程自动化等各种场景,使开发者可以专注于业务逻辑而非底层技术实现。
今天就为大家介绍一下如何在葡萄城公司的低代码开发平台【活字格】中使用RabbitMQ。
环境准备
低代码与消息队列
为了让活字格的功能更加地丰富、强大,活字格中也支持了RabbitMQ的功能。
插件下载链接:消息队列插件包
关于RabbitMQ的部署可以参考这篇文章:活字格无缝对接RabbitMQ消息队列教程
插件安装好后:
插件看起来多,但不是每一个我们都需要频繁地用,大部分是用来做配置的。如果你对RabbitMQ熟悉,其实你也可以完全自己在它的web管理后台来配置,可能更加方便。
这里将插件分为几个类,让大家更好了解它的作用:
类别 | 包含插件 | 作用描述 |
---|---|---|
服务器连接conneciton | 创建服务器连接删除服务器连接获取所有连接名 | 用来与Rabbit MQ服务器建立连接,可连接本机/内网/外网/云服务器等等... |
交换机管理Exchange | 创建交换机删除交换机 | 用来创建或删除一个交换机Exchange交换机是Rabbit MQ里的重要概念,它负责将消息分配到不同列队。 |
队列管理Queue | 创建一个队列删除队列清空队列 | 用来创建或删除一个队列队列是用来存放待发布的消息的,交换机通过规则将消息存放到队列,消费者通过订阅队列拿到消息 |
绑定Binding | 绑定交换机与队列 | 将交换机与队列按一定规则进行绑定 |
通道Channel | 创建连接通道关闭连接通道 | 这是消费者与服务器通信的通道,也可以理解为信道,它包括一些独特的配置,来定义本次通信的规则 |
订阅 | 开始订阅队列停止订阅队列获取列队消息 | 这是最常用也是最核心的功能,它用来订阅或取消订阅一个队列,当你订阅后,有新的消息会主动的推送过来从而触发我们实现编排好的处理命令 |
在测试期间,我们可以一边调试,一边查看RabbitMQ的管理后台,看我们的每一个操作是否都反应在了后台。
一般来说,开启web管理插件后,在服务器的15672端口会开放一个web系统,登录即可查看。
订阅队列的方法
如果你已经完成了交换机、列队的创建和绑定,你可以直接使用插件发送一条消息来测试。
第1步:连接服务器
连接后会得到一个“连接标识”,记得保存~
第2步:订阅消息
使用第一步的“连接标识”和你要订阅的“队列名称”来完成订阅。订阅成功后,会返回一个“消费者标识”,取消订阅的时候需要用到。
注意:新版本增加了多线程处理消息功能,可利用CPU的多线程同时处理多条消息。
消息到达事件:
这是核心中的核心了,我们必须定义消息到达后,如何处理该消息?
该命令内可以拿到消息内容、消息头等数据。有了这些数据,我们就可以任意编辑需要处理消息的逻辑了。
温馨提示:如果没有勾选“消息自动确认”,那么在消息到达事件里,如果出现异常或命令最终返回值不为0,那么为了确保消息的准确处理,该条消息不会被确认。
简单的来说就是,如果你处理消息的逻辑报错了,那么插件会知道,不会给你把消息确认,让它继续留在列队,接下来还会被订阅者收取到。这样做的好处显而易见,假如我收到了一条消息,但是我没有处理好它,如果这时RabbitMQ以为我处理完了,直接删掉了该消息,那我再也没有机会去处理了,也间接的导致该条消息地丢失。
第3步:发送消息
剩下的就是发布消息了,只需要提供消息内容即可,其他配置均可默认即可;消息发布后,会返回一个“唯一消息标识”用于和你的业务数据形成关联。
PS:发布消息和订阅消息,都可以很多服务器一起参与,比如说:你有三台服务器都部署了活字格应用,他们可能都是不同应用,但是不妨碍他们都向RabbitMQ发布消息、订阅消息。
总结
以上就是消息队列RabbitMQ在活字格中的应用,如果您想了解更多信息,欢迎点击这里查看。