RabbitMQ
在复杂系统的架构中,会有负责处理消息队 列的微服务,如下图:服务 A 负责产生消息给消息队列,而服务 B 则负责消费消息队列中的任务。

在 Midway 中,我们提供了订阅 rabbitMQ 的能力,专门来满足用户的这类需求。
基础概念
RabbitMQ 的概念较为复杂,其基于高级消息队列协议即 Advanced Message Queuing Protocol(AMQP),如果第一次接触请阅读一下相关的参考文档。
AMQP 有一些概念,Queue、Exchange 和 Binding 构成了 AMQP 协议的核心,包括:
- Producer:消息生产者,即投递消息的程序。
- Broker:消息队列服务器实体。
- Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
- Binding:绑定,它的作用就是把 Exchange 和 Queue 按照路由规则绑定起来。
- Queue:消息队列载体,每个消息都会被投入到一个或多个队列。
- Consumer:消息消费者,即接受消息的程序。
简单的理解,消息通过 Publisher 发布到 Exchange(交换机),Consumer 通过订阅 Queue 来接受消息,Exchange 和 Queue 通过路由做连接。

消费者(Consumer)使用方法
安装依赖
Midway 提供了订阅 rabbitMQ 的能力,并能够独立部署和使用。安装 @midwayjs/rabbitmq
模块及其定义。
$ npm i @midwayjs/rabbitmq@2 amqplib --save
$ npm i @types/amqplib --save-dev