在 RabbitMQ 的文档中,他们给出了一个使用
setTimeout
向交换器发布消息然后在 500 延迟后关闭连接的示例。我决定跳过 setTimeout
,但是如果我在运行 publish
方法后立即关闭连接,我的消息就不会发送到 RabbitMQ 服务器。想象一下:
channel.publish('MyExchange', 'MyRoutingKey', Buffer.from('{}'));
await channel.close();
await connection.close();
有没有比设置
setTimeout
更好的发送消息后关闭连接的方法?
链接到文档,在
Putting it all together
部分:https://www.rabbitmq.com/tutorials/tutorial-five-javascript.html
我还应该为上述问题提供连接和通道实例。
解决方案是使用
createConfirmChannel
而不是 createChannel
。 Channel
返回的createConfirmChannel
提供了一个waitForConfirms
方法等待confirm
服务器接收到所有消息。
更深入的解释: