我在 Node.js 中使用 amqplib,我不清楚我的代码中的最佳实践。
基本上,我当前的代码amqp.connect()
在节点服务器启动时调用,然后为每个生产者和每个消费者使用不同的通道,从不真正关闭它们中的任何一个。我想知道这是否有意义,或者我应该在每次我想发布消息时创建频道、发布并关闭它。那么连接呢?连接一次,然后在我的服务器的整个生命周期内保持打开状态是一种“好习惯”吗?
在消费者方面 - 我可以使用单个连接和单个通道来侦听多个队列吗?
感谢您的任何澄清
通常,打开和关闭每条消息的连接和通道不是一个好习惯。连接是长期存在的,需要资源来不断打开和关闭它们。对于通道,它们与连接共享 TCP 连接,因此它们更轻量级,但它们仍然会消耗内存,并且在使用完之后绝对不应该保持打开状态。
建议每个线程有一个通道,每个消费者有一个通道。但是对于发布来说,使用同一个频道是完全可以的。但请记住,根据操作,协议可能会在某些情况下终止通道(例如队列存在检查),因此请为此做好准备。许多客户端实现上的最大通道数也有软(可配置)和硬(通常为 65535)限制。
总而言之,根据您的用例使用一对多连接,在需要时打开通道并在有意义时共享它们,但请记住在完成后关闭它们。