如何在不使用 setTimeout 的情况下发布和断开连接?

问题描述 投票:0回答:1

在 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

javascript rabbitmq
1个回答
0
投票

我还应该为上述问题提供连接和通道实例。

解决方案是使用

createConfirmChannel
而不是
createChannel
Channel
返回的
createConfirmChannel
提供了一个
waitForConfirms
方法等待
confirm
服务器接收到所有消息。

更深入的解释:

© www.soinside.com 2019 - 2024. All rights reserved.