在Node.js中使用RabbitMQ需要使用第三方模块amqplib。
使用npm安装amqplib:
npm install amqplib
在代码中引入amqplib:
const amqp = require('amqplib');
连接到RabbitMQ需要指定RabbitMQ的地址和端口,以及连接的用户名和密码:
const connection = await amqp.connect({
hostname: 'RabbitMQ地址',
port: RabbitMQ端口,
username: '用户名',
password: '密码'
});
连接成功后,可以创建一个通道(channel):
const channel = await connection.createChannel();
创建一个名为myQueue的队列:
await channel.assertQueue('myQueue', {
durable: false
});
durable为false表示队列不是持久化的,即在RabbitMQ服务器重启后会丢失,如果需要持久化可以将其设置为true。
使用sendToQueue方法发送消息到队列中:
channel.sendToQueue('myQueue', Buffer.from('Hello, RabbitMQ!'));
消息体可以是字符串或Buffer。
使用consume方法从队列中接收消息:
channel.consume('myQueue', (message) => {
console.log(message.content.toString());
});
当有消息到达队列时,会执行回调函数,message为接收到的消息对象,可以通过content属性获取消息体。
const amqp = require('amqplib');
async function main() {
const connection = await amqp.connect({
hostname: 'RabbitMQ地址',
port: RabbitMQ端口,
username: '用户名',
password: '密码'
});
const channel = await connection.createChannel();
await channel.assertQueue('myQueue', {
durable: false
});
channel.sendToQueue('myQueue', Buffer.from('Hello, RabbitMQ!'));
channel.consume('myQueue', (message) => {
console.log(message.content.toString());
});
}
main();