gpt4 book ai didi

rabbitmq - 每次发布后我应该关闭 channel /连接吗?

转载 作者:行者123 更新时间:2023-12-03 21:22:06 25 4
gpt4 key购买 nike

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

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

感谢您的任何澄清

最佳答案

通常,打开和关闭每条消息的连接和 channel 不是一个好习惯。连接是长期存在的,需要资源来不断打开和关闭它们。对于 channel ,它们与连接共享 TCP 连接,因此它们更轻量级,但它们仍然会消耗内存,并且在使用完之后绝对不应该保持打开状态。

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

总而言之,根据您的用例使用一对多连接,在需要时打开 channel 并在有意义时共享它们,但请记住在完成后关闭它们。

rabbitmq documentation解释连接和 channel 的性质(文档结尾)。和接受的答案 this question 有关于该主题的良好信息。

关于rabbitmq - 每次发布后我应该关闭 channel /连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44358076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com