Rabbitmq 每次发布后是否应关闭频道/连接?

Rabbitmq 每次发布后是否应关闭频道/连接?,rabbitmq,node-amqp,Rabbitmq,Node Amqp,我在Node.js中使用amqplib,我不清楚代码中的最佳实践 基本上,我当前的代码在节点服务器启动时调用amqp.connect(),然后为每个生产者和消费者使用不同的通道,而不是实际关闭其中任何一个。我想知道这是否有意义,或者我应该创建频道,在每次发布消息时发布并关闭它。那连接呢?连接一次,然后在我的服务器生命周期内保持打开状态,这是一种“良好做法”吗? 在消费者方面-我可以使用单个连接和单个通道监听多个队列吗 感谢您的澄清一般来说,打开和关闭每条消息的连接和频道不是一个好的做法。连接是长

我在Node.js中使用amqplib,我不清楚代码中的最佳实践

基本上,我当前的代码在节点服务器启动时调用
amqp.connect()
,然后为每个生产者和消费者使用不同的通道,而不是实际关闭其中任何一个。我想知道这是否有意义,或者我应该创建频道,在每次发布消息时发布并关闭它。那连接呢?连接一次,然后在我的服务器生命周期内保持打开状态,这是一种“良好做法”吗?
在消费者方面-我可以使用单个连接和单个通道监听多个队列吗


感谢您的澄清

一般来说,打开和关闭每条消息的连接和频道不是一个好的做法。连接是长期存在的,需要资源来保持打开和关闭它们。对于通道,它们与连接共享TCP连接,因此它们更轻量级,但它们仍将消耗内存,并且在使用完它们后绝对不应保持打开状态


建议每个线程有一个通道,每个使用者有一个通道。但是对于出版业来说,使用同一个渠道是完全可以的。但是请记住,根据操作的不同,协议可能会在某些情况下(例如,队列存在性检查)终止通道,因此请做好准备。在许多客户端实现中,通道的最大数量也有软(可配置)和硬(通常为65535)限制

总之,根据您的用例使用一到几个连接,在需要时打开通道,在有意义时共享,但记住在完成时关闭通道


rabbitmq解释了连接和通道的性质(文档末尾)。关于这个问题的公认答案提供了关于这个主题的良好信息。

“建议每个线程都有一个频道”什么是线程?看看这个问题: