我在 Node.js 中使用 amqplib,但我不清楚代码中的最佳实践。
基本上,我当前的代码调用amqp.connect()
当 Node 服务器启动时,然后为每个生产者和每个消费者使用不同的通道,而不会真正关闭它们中的任何一个。我想知道这是否有意义,或者我应该创建频道,发布并在每次想要发布消息时关闭它。那么连接又如何呢?连接一次,然后在我的服务器的生命周期内保持打开状态是一个“好习惯”吗?
在消费者方面 - 我可以使用单个连接和单个通道来侦听多个队列吗?
感谢您的任何澄清
一般来说,打开和关闭每条消息的连接和通道并不是一个好的做法。连接是长期存在的,需要资源来不断打开和关闭它们。对于通道,它们与连接共享 TCP 连接,因此它们更轻量级,但它们仍然会消耗内存,并且在使用完它们后绝对不应该保持打开状态。
建议每个线程有一个通道,每个消费者有一个通道。但对于发布来说,使用相同的渠道是完全可以的。但请记住,根据操作的不同,协议可能会在某些情况下终止通道(例如队列存在检查),因此请为此做好准备。许多客户端实现上的最大通道数还存在软(可配置)和硬(通常为 65535)限制。
总而言之,根据您的用例,使用一到几个连接,在需要时打开通道并在有意义时共享它们,但请记住在完成后关闭它们。
兔子MQ文档 http://www.rabbitmq.com/tutorials/amqp-concepts.html解释连接和通道的性质(文档末尾)。以及接受的答案this https://stackoverflow.com/questions/10407760/is-there-a-performance-difference-between-pooling-connections-or-channels-in-rab问题提供了有关该主题的良好信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)