rabbitMQ生产者与消费者

1、建立连接

1
2
3
const conn = await amqp.connect('amqp://localhost:5672');
const channel = await conn.createChannel();
await channel.assertQueue('orders', { durable: true });

2、生产者

1
await channel.sendToQueue('orders', Buffer.from('消息'), { persistent: true });

3、消费者

1
2
3
4
5
6
channel.consume('orders', msg => { // 回调会一直执行到取完所有消息,而且无法同步化
  if (msg) {
    orders.push(msg);
    channel.ack(msg);    // 通知队列删除此消息
  }
}, { noAck: false });

4、不通过消费者直接取消息

1
const msg = await channel.get('orders'); // 一次只取出一个消息

5、注意

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

posted @   随风&  阅读(233)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示