rabbitMQ生产者与消费者
1、建立连接
const conn = await amqp.connect('amqp://localhost:5672');
const channel = await conn.createChannel();
await channel.assertQueue('orders', { durable: true });
2、生产者
await channel.sendToQueue('orders', Buffer.from('消息'), { persistent: true });
3、消费者
channel.consume('orders', msg => { // 回调会一直执行到取完所有消息,而且无法同步化
if (msg) {
orders.push(msg);
channel.ack(msg); // 通知队列删除此消息
}
}, { noAck: false });
4、不通过消费者直接取消息
const msg = await channel.get('orders'); // 一次只取出一个消息
5、注意
消费者无法关闭,每用一次消费者方式会重新生成一个消费者,多个消费者中只有一个消费者能取到消息,会导致后面再用消费者取消息会取不到。

浙公网安备 33010602011771号