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、注意

消费者无法关闭,每用一次消费者方式会重新生成一个消费者,多个消费者中只有一个消费者能取到消息,会导致后面再用消费者取消息会取不到。

posted @ 2022-03-15 13:52  随风&  阅读(248)  评论(0)    收藏  举报