每次发布后我应该关闭通道/连接吗?

2024-04-04

我在 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(使用前将#替换为@)

每次发布后我应该关闭通道/连接吗? 的相关文章

随机推荐

  • 如何在 Rmarkdown 演示文稿(滑动)中回显代码之前显示块输出?

    我最近开始在 Rmarkdown 中使用 Slidy 演示模板 并且喜欢每张幻灯片如何允许您向下滚动以获取更多内容 我使用它的一种方法是与我的学生共享绘图 请参阅下面的示例代码 在一张幻灯片上 我可以显示绘图以及用于创建绘图的确切代码 可以
  • 为什么 VSCode 在启动调试器之前不激活 conda?

    当我在 VSCode 中启动调试器时 只有在调试过程因 缺少必需的依赖项 导入错误而停止后 conda 环境才会被激活 立即重新启动调试器就可以正常工作了 此问题发生在 Anaconda base 和其他环境中 测试代码 import pa
  • 使用 ui-router(AngularJS) 时,$rootScope.$on("$routeChangeSuccess) 或 $rootScope.$on("$stateChangeSuccess) 不起作用

    我在应用程序中使用 UI router 来嵌套视图 但同时我想在路由更改时监听事件 在使用 UI router 之前 routeChangeSuccess 触发得很好 但在 ui router 之后 它不会触发 文档建议使用 viewCon
  • 将csv字符串读入向量C++

    csv转vector有很多选项 包括读取 csv 文件并将其所有数据添加到 C 中的向量中 https stackoverflow com questions 60322479 read a csv file and and add its
  • 设计决策:(VB.NET)我应该创建一个类或模块来轻松连接到多个数据库之一吗?

    基本上 我们有三个数据库可以从中获取数据 一种是 SQL Server 数据库 一种是 Access 数据库 连接起来特别烦人 因为我们必须映射网络驱动器等 最后一个将是 Oracle 数据库 当 IT 最终授予我们权限时 我正在考虑创建一
  • 调试时无法进入迭代器块 (C#)

    我正在尝试调试从单元测试项目执行的代码 但是当我尝试进入一个方法时 它只是直接传递到下一行 并且不会命中该方法内的断点 该方法位于不同项目中的一个类上 但所有代码都是在调试模式下构建的 我已经尝试清理和重建解决方案 但没有任何乐趣 然而 自
  • 我可以在 Docker for Mac 中使用不安全的 Kubernetes API 端点吗?

    当我在 Docker for Mac 中运行 Kubernetes 时 Kube API 似乎只能从安全端点访问https 本地主机 6443 https localhost 6443 通过 minikube 我可以使用 Kube API
  • Sql CE 多条语句不一致

    长期以来 您确实可以使用 SQL CE 执行多个语句 https stackoverflow com questions 6970502 can i execute multiple statements in sql server com
  • 在 Windows 中执行全屏抓取

    我正在研究一个想法 涉及全面捕获屏幕 包括窗口和应用程序 对其进行分析 然后将项目作为叠加层绘制回屏幕上 我想学习图像处理技术 如果我可以直接访问 Windows 屏幕 我可以获得大量的数据来处理 我可以用它来构建以前从未见过的自动化工具
  • 获取分离片段中的上下文/活动?

    有一个类似的问题 https stackoverflow com questions 20464273 get the application context in fragment in android大多数答案建议使用在哪里getAct
  • 未捕获的类型错误:使用 $.param() 序列化传单数据时无法读取未定义的属性“lat”

    我想先说一下 我对 JavaScript 很陌生 我正在尝试使用 Leaflet 和 AJAX 调用来发布用户位置和地图边界 在我的事件处理程序中stateUpdater onLocationFound日志语句打印出正确的用户坐标和地图边界
  • 具有后备功能的 HTML5 视频标签

    我正在寻找在 html 中嵌入视频和音频的解决方案 新的 videotag 支持 ogg 和 mp4 但是否有针对 flv 和其他格式的后备解决方案 例如 如果我想嵌入一个 ogg 它会检查是否支持html5 如果不支持 它会使用后备 如果
  • 是否可以创建一个 git 存储库,其中分支是来自其他存储库的克隆?

    情况如下 我继承了两台独立的机器 一台用于 开发 另一台是生产机器 问题是 它们当然不同步 为了使情况更加清晰 我在每台计算机上创建了应用程序目录的独立 git 存储库 我现在希望能够比较这些存储库 以便找出它们之间的不同之处 我的想法是创
  • WCF TCP 客户端 - 如何使用它们的基本指南?

    我有一个 WCF 服务并希望使用 TCP 绑定连接到它 这一切都很好 但是你应该如何处理客户呢 我注意到 如果您为每个调用创建一个新客户端 它不会重新使用该通道 并会留下一堆 TCP 连接 直到超时 创建客户端 调用其方法 然后关闭它是正常
  • HTML 5 视频流 .ism 文件?

    我有一个带有媒体服务 4 0 的 IIS 7 0 服务器设置 我创建了一个非常简单的 html 5 页面 其中包含video以其source指向一个 ism文件 是否可以使用 html 5 中的 ism 文件的清单来播放视频 就像在 sil
  • WordPress 插件 WooCommerce,自定义支付网关设置未保存

    我正在为 WordPress 插件 WooCommerce 开发自定义支付网关 我似乎无法保存支付网关的设置 当我在字段中输入信息然后单击 保存 时 页面刷新 所有字段均为空白 我究竟做错了什么 这是我的代码
  • 将参数传递给mapDispatchToProps()

    我不能撒谎 我对 React Redux 有点困惑 我认为很多操作都需要参数 例如从商店中删除项目 但即使我仍在阅读如何以这种方式从组件分派来传递参数 现在大约 2 小时 我没有得到任何答案 我被尝试过this props dispatch
  • Python 和/或 C/C++ 中的高精度算术?

    摘要 哪个 Python 包或 C 库是非常高精度算术运算的最佳选择 我有一些转换小数天数的函数 0 0 0 99999 转换为人类可读的格式 小时 分钟 秒 但更重要的是 毫秒 微秒 纳秒 转换是通过以下函数完成的 请注意 我还没有实施时
  • .Net DataView 和 DataTable 绑定

    我有一个简单的 Windows 窗体应用程序 它将 DataView 绑定到 ListBox 此 DataView 使用 Linq 按特定列降序对我的 DataTable 进行排序 然后我的列表框绑定到数据视图 然后我有一个简单的表单来将数
  • 每次发布后我应该关闭通道/连接吗?

    我在 Node js 中使用 amqplib 但我不清楚代码中的最佳实践 基本上 我当前的代码调用amqp connect 当 Node 服务器启动时 然后为每个生产者和每个消费者使用不同的通道 而不会真正关闭它们中的任何一个 我想知道这是