我在Node.js中使用amqplib,但我不清楚代码中的最佳做法。
基本上,我当前的代码amqp.connect()
在Node服务器启动时调用,然后为每个生产者和每个使用者使用不同的通道,从不真正关闭它们中的任何一个。我想知道这是否有意义,还是应该在每次想要发布消息时创建频道,发布并关闭该频道。那连接呢?连接一次,然后在服务器的整个生命周期中保持打开状态,这是一种“好的做法”吗?
在消费者方面-我可以使用单个连接和单个通道来监听多个队列吗?
谢谢您的澄清
通常,不是打开和关闭每条消息的连接和通道的好习惯。连接是长期存在的,并且需要资源来保持打开和关闭它们的时间。对于通道,它们与该连接共享TCP连接,因此它们更轻巧,但是它们仍然会占用内存,并且在使用完它们之后绝对不应将其保持打开状态。
建议每个线程有一个通道,每个使用者有一个通道。但是对于发布,完全可以使用相同的渠道。但是请记住,根据操作的不同,协议在某些情况下(例如队列存在检查)可能会杀死通道,因此请为此做好准备。在许多客户端实现中,对最大通道数也有软限制(可配置)和硬限制(通常为65535)。
综上所述,根据您的用例,使用一对多的连接,在需要时打开通道,并在合理的时候共享它们,但切记在完成后关闭它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句