简介
amqplib-publish-subscribe 是一个 npm 包,它提供了一个易于使用的 API,用于在 Node.js 应用程序中执行发布/订阅消息模式。该模块适用于 RabbitMQ 的 AMQP 协议,默认使用 v0.9.1 版本。它是一个用于消息队列系统的 Node.js 客户端,可以实现生产者和消费者的互相通信。
安装
使用 npm 可以很方便地安装 amqplib-publish-subscribe:
npm install amqplib-publish-subscribe --save
基本使用
下面是如何使用 amqplib-publish-subscribe 的四个基本步骤:
- 建立连接
- 创建 channel
- 发布消息
- 订阅消息
建立连接
连接 RabbitMQ 需要以下参数:
- 协议(amqp、amqps)
- RabbitMQ 服务器地址
- RabbitMQ 服务器端口号
- 可选的用户名和密码
- 虚拟主机
在建立连接时,我们需要传递一个 URI
字符串,包含以上信息。下面是一个示例:
const amqplib = require('amqplib-publish-subscribe'); const uri = 'amqp://localhost:5672'; const connection = await amqplib.connect(uri);
创建 channel
建立连接后,需要创建一个 channel,使用它在 RabbitMQ 上执行命令。
const channel = await connection.createChannel();
发布消息
现在,我们可以使用 publish
方法来发布消息:
const exchangeName = 'my_exchange'; const message = 'Hello World!'; const routingKey = 'my_routing_key'; channel.publish(exchangeName, routingKey, Buffer.from(message));
订阅消息
在订阅消息之前,需要创建一个 Exchange,并将其绑定到队列中:
const exchangeName = 'my_exchange'; const queueName = 'my_queue'; const routingKey = 'my_routing_key'; await channel.assertExchange(exchangeName, 'direct', { durable: true }); await channel.assertQueue(queueName, { durable: true }); await channel.bindQueue(queueName, exchangeName, routingKey);
现在,使用 consume
方法来订阅消息:
const consumer = (msg) => { console.log(msg.content.toString()); }; channel.consume(queueName, consumer, { noAck: true });
示例代码
下面是一个具有完整功能的示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------------------------- ----- --- - ------------------------ ----- ------------ - -------------- ----- --------- - ----------- ----- ---------- - ----------------- ----- -------- ------------------- - --- - ----- ---------- - ----- --------------------- ----- ------- - ----- --------------------------- -- -- ------------------ ----- ------------------------------------ --------- - -------- ---- --- ----- ------------------------------ - -------- ---- --- ----- ---------------------------- ------------- ------------ -- ---- ----- ------- - ------ -------- ----------------------------- ----------- ---------------------- -- ---- ----- -------- - ----- -- - ------------------------------------ -- -------------------------- --------- - ------ ---- --- - ----- ------- - --------------------- -- ------- -- ----------- ------- - - --------------------
总结
amqplib-publish-subscribe 是一个非常方便的 Node.js 客户端,可以使用它与 RabbitMQ 进行通信。在生产者和消费者之间实现发布/订阅消息很容易,只需经过几个简单的步骤即可。本文提供了一个完整示例,可以帮助您快速入门。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600552e681e8991b448d04e5