我为RabbitMQ创建通道的常见建议是建议每个线程使用一个通道。但是在node.js中,我们根本不管理线程。 那么我们何时创建频道?
我的用例是使用AMQPLib的节点Web服务器,它需要使用请求/响应模式与单个RabbitMQ服务器通信。每个HTTP请求可能需要多个RabbitMQ请求才能生成HTTP响应。我打算在每个节点进程中使用一个Rabbit连接,但是对于各种请求或响应队列重用通道的程度,我不确定。
一个附加问题:如果答案是为每个单独的请求使用一个通道,那么在每条消息发送之前必须创建一个通道会有很多延迟吗?
答案 0 :(得分:2)
频道是AMQP协议级构造。它们实际上与底层连接无关(除了明显的事实,即为了拥有一个通道需要连接)。 RabbitMQ客户端的.NET实现编写得很糟糕,它在通道上进行线程锁定,因此每个线程有一个通道 - 这是代码限制,而不是协议限制。
有一条评论指出“创建”渠道的成本很高 - 我不知道基于渠道的构建如何才能实现这一点,但我不知道。
无论如何,要回答您的问题:不要创建超出您需要的频道。如果你可以使用一个频道进行操作(听起来像你可以),那就这样做吧。不要为自己创造更多的工作。