没有连接的 AMQP/RabbitMQ 通道什么时候会死亡?

2024-03-04

我有一个简单的 RabbitMQ 测试程序,随机将消息排队,另一个读取它们,所有这些都使用 Spring-AMQP。如果消费者死亡(例如,在没有机会关闭其连接或通道的情况下终止进程),则它尚未确认的任何消息似乎将永远保持未确认状态。

我看过很多参考资料(例如这个问题 https://stackoverflow.com/questions/7063224)表示通道在没有连接时就会终止,并且剩余的未确认消息将被重新传递。这不是我看到的行为 - 相反,我得到了越来越多的标记为空闲的通道列表和越来越多的标记为正在运行但没有活动的连接列表。

是否需要进行一些配置才能注意到进程被终止后连接就消失了?

EDIT:我在 VirtualBox VM 中运行rabbitmq 服务器,它显然无法通过 NAT 正确管理无效的入站连接。这对于直接在物理主机上运行的 mq 服务器来说效果很好。


AMQP 使用队列和交换器。您在交换器上发布并绑定队列以从交换器获取消息(您可以看到简短的解释 http://arnon.me/2011/08/amqp/在我的博客上。创建队列时,您可以将其设置为自动删除,以及在自动删除之前将其保持未使用状态的时间。 以下是 RabbitMQ 快速参考中的引用:

队列.declare(短保留-1,队列名称队列,位被动,位 耐用,有点​​独特,位自动删除,无需等待,无需等待,表 参数)➔ 声明-ok

支持:完整的声明队列,如果需要则创建。

此方法创建或检查队列。创建新队列时 客户端可以指定控制持久性的各种属性 队列及其内容,以及队列的共享级别。

RabbitMQ 实现了 AMQP 规范的扩展,允许 队列的创建者来控制其行为的各个方面。

每个队列消息 TTL 此扩展确定消息的持续时间 发布到队列的数据在被服务器丢弃之前可以存活。 生存时间通过 x-message-ttl 参数配置 该方法的arguments参数。

队列到期可以使用可选的租用时间来声明队列。这 租约时间决定队列在被使用之前可以保持未使用状态的时间长度 被服务器自动删除。租赁时间以 x-使该方法的arguments 参数中的参数过期。

镜像队列我们开发了主动/主动高可用性 队列。这是通过允许队列镜像到其他节点来实现的 在 RabbitMQ 集群内。结果是 a 的一个节点应该 集群失败,队列可以自动切换到其中一个镜像 并继续运营,不会出现服务不可用的情况。创造 镜像队列,您在参数中提供 x-ha-policy 参数 该方法的参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有连接的 AMQP/RabbitMQ 通道什么时候会死亡? 的相关文章

  • 在 Java Swing 中检测 JScrollPane 上的 mouseClick 事件

    如果我有这样的东西 我可以使用布尔标志 performAdjustment 控制自动滚动 static boolean performAdjustment true JTextArea textArea new JTextArea JScr
  • JAVA - 带有特殊字符的 LDAP 密码不起作用

    我试图在我的系统上创建一个登录屏幕 在 Active Directory 中进行查询 但是当用户的密码包含一些特殊字符 如 和 时 它不会验证 我需要加密密码才能工作吗 我该怎么做 我使用 getPassword 通过 JPasswordF
  • 如何自定义BlockingQueue的阻塞行为

    我想创建一个阻塞队列 它根据自定义规则而不是队列中的项目数量来阻止生产者 例如 生产者生成一些文件并放入队列中 消费者经过一番分析后将它们转移到特定位置 对于上述场景 如果队列中的总文件大小达到某个阈值 我希望生产者等待生成新文件 如果总大
  • Firebase 查询 Or'ing whereEqualTo 以获得可能值的列表

    我见过之前针对早期版本的 Firebase 提出过这个问题 https stackoverflow com questions 26700924 query based on multiple where clauses in fireba
  • .java 和 .scala 类之间是否可能存在循环依赖?

    假设我在 java 文件中定义了类 A 在 scala 文件中定义了类 B A 类使用 B 类 B 类使用 A 类 如果我使用 java 编译器 则会出现编译错误 因为 B 类尚未编译 如果我使用scala编译器A类将找不到 有没有可以同时
  • Spring webflow 应用程序:HTTP 302 暂时移动

    我的 java 应用程序中的每个请求都会生成另外 2 个带有 HTTP 302 错误的请求 例如 如果请求查看名为板 html 这个请求是从首页 html 我收到按以下顺序生成的 3 个请求 POST home html 302 Moved
  • 使用多个构造函数创建不可变类

    我正在阅读这一页 https docs oracle com javase tutorial essential concurrency imstrat html关于在 Java 中创建不可变类 并决定根据页面上概述的规范修改我正在编写的类
  • firestore快照监听器生命周期和定价之间有什么关系?

    在我的活动中 我有一个字符串列表 这些字符串表示我想要附加快照侦听器的 Firestore 文档 我使用 Acivity ModelView 存储库结构 在活动的 onCreate 中 我向 ViewModelProvider 询问适当的
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • LibGdx 如何使用 OrthographicCamera 滚动?

    我已经找了 10 个小时 字面意思 我已经完成了 我需要问一下 事情是我正在学习如何使用 LibGdx 来编写 Java 游戏 我正在做一个水平太空飞船游戏 所以 我最糟糕的问题是我不知道如何滚动 我认为绘制会更好地解释 我想绘制一个巨大的
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终
  • 如何使用 Java 原生接口从 Java 调用 Go 函数?

    可以通过以下方式调用 C 方法JNA https en wikipedia org wiki Java Native AccessJava 中的接口 如何使用 Go 实现相同的功能 package main import fmt impor
  • 如何在将数据发送到 Firebase 数据库之前对其进行加密?

    我正在使用 Firebase 实时数据库制作聊天应用程序 我知道 Firebase 非常安全 只要您的规则正确 但我自己可以阅读使用我的应用程序的人的所有聊天记录 我想阻止这种情况 为此我需要一种解密和加密方法 我尝试使用凯撒解密 但失败了
  • 通用 JSF 实体转换器[重复]

    这个问题在这里已经有答案了 我正在编写我的第一个 Java EE 6 Web 应用程序作为学习练习 我没有使用框架 只是使用 JPA 2 0 EJB 3 1 和 JSF 2 0 我有一个自定义转换器 用于将存储在 SelectOne 组件中
  • 嵌入式 tomcat 7 servlet 3.0 注释不起作用

    我有一个精简的测试项目 其中包含 Servlet 版本 3 0 用注释声明 如下所示 WebServlet test public class TestServlet extends HttpServlet private static f
  • 如何计算文件中单词的长度?爪哇

    我正在尝试编写一个代码来计算文件中特定长度的单词数 例如 How are you 会打印 Proportion of 3 letter words 100 3 words 我想计算长度为 1 2 3 4 5 6 7 8 9 10 11 12
  • JDK 7 的快速调试/调试构建

    我正在寻找 JDK 的调试 或者我猜他们称之为快速调试构建 以启用在运行时生成的打印程序集以及查找性能问题时所需的其他诊断 就目前情况而言 我似乎找不到可以直接使用的 现成的 快速调试构建二进制包 有人可以帮我提供下载链接 或者至少提供有关
  • 日期时间解析异常

    解析日期时 我的代码中不断出现异常错误 日期看起来像这样 Wed May 21 00 00 00 EDT 2008 这是尝试读取它的代码 DateTimeFormatter formatter DateTimeFormatter ofPat
  • 使用 Android 的 Mobile Vision API 扫描二维码

    我跟着这个tutorial http code tutsplus com tutorials reading qr codes using the mobile vision api cms 24680关于如何构建可以扫描二维码的 Andr
  • 如何使用 Spring AOP 建议静态方法?

    在执行类的静态方法之前和之后需要完成一些日志记录 我尝试使用 Spring AOP 来实现这一点 但它不起作用 而对于正常方法来说它起作用 请帮助我理解如何实现这一点 如果可以使用注释来完成 那就太好了 也许您应该在使用 Spring AO

随机推荐

  • 在 Require.js 中填充一个使用 module.exports 的模块可能吗?

    我有一个模块想要包含在 Require js 链中 进一步来说 https github com component emitter https github com component emitter 在浏览器上我得到 uncaught
  • 如何重写引用类型的 println 行为

    我有一个使用创建的循环图dosync and ref set 当我把这个传递给println我得到一个java lang StackOverflowError正如我所期望的 因为它实际上是在尝试打印无限嵌套的结构 我发现如果我这样做 str
  • 如何在 Swift 中的 UIWebView 中加载本地 PDF

    所以我目前正在尝试显示 UIWebview 中的本地 PDF 这是我正在使用的代码 IBOutlet weak var webView UIWebView override func viewDidLoad super viewDidLoa
  • 修复 ggplot2 中的 x 轴排序

    我有以下数据 dftmp z transient kprimes groupname 1 1 244061 10 k 9 8 p 56 4 2 0 995249 20 k 9 8 p 56 4 3 0 746437 30 k 9 8 p 5
  • Cowplot 中的plot_clone 错误

    我正在尝试使用plot grid在包owplot中制作2x2图 我不断收到错误消息 plot clone plot 中的错误 尝试应用非函数 我不知道如何纠正这个问题 起初我不确定 copplot 是否只能处理 1x2 或 2x1 布局 类
  • vscode:打开文件而不是通过快速打开预览文件

    When I open up the Command Palette Ctrl or Cmd P type in a filename and hit Enter the file will automatically be opened
  • Android 上的 OpenGL 仅使用 C++ [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在为 Android 2 1 开发 Android 应用程序 我正在尝试仅使用 C 编写 Open
  • 使用“.”文本搜索值在搜索值中

    我收集了 200 万份文档 其中包含 20 个字段 有几个字段有 和 然后是一个唯一的文件名字段 Update 我已将 转换为 问题仍然存在 看来 造成了大部分问题 我认为索引器在点上分开 因此文件名被索引 扩展名被索引 但不是整个文件名
  • 如何在材料设计中更改操作栏菜单项文本颜色

    我正在尝试更新我的记事本应用程序以使用 Material Design 即使在较旧的设备上也是如此 到目前为止我做了什么 将库 appcompat v7 添加到我的项目中 以支持旧设备上的 Material Design 修改Android
  • Plone/Zope 的外部方法

    我有两个 Plone 实例在服务器上运行 它们的位置是 usr local Plone Inst1 和 usr local Plone Inst2 我正在尝试设置外部方法 但很难确定我的 扩展 文件夹应该放置在哪里 似乎无论我把它放在哪里
  • 如何使用CSS更改滚动条颜色[重复]

    这个问题在这里已经有答案了 我的jsfiddle在这里 http jsfiddle net sureshpattu Xck2A 我试图更改滚动条的颜色 但在这里它不起作用 Css flexcroll scrollbar face color
  • 什么是“参数相关查找”(又名 ADL 或“Koenig 查找”)?

    关于什么是参数依赖查找有哪些好的解释 许多人也将其称为 Koenig Lookup 我最好想知道 为什么这是一件好事 为什么这是一件坏事 它是如何工作的 柯尼希查找 or 参数相关查找 http en wikipedia org wiki
  • 如何在视图中多次正确使用同一个 AngularJS 1.5 组件?

    我正在使用 AngularJS 1 5 的新组件创建一组小部件 问题是 当多次使用同一个小部件时 它们会以某种方式共享控制器或范围 我认为组件的一件事是它们的范围是完全隔离的 我的主要 html 模板包含小部件
  • 应用内购买错误的恢复按钮

    我在应用程序中恢复应用内购买时遇到问题 我已经在我的项目中应用了这行代码 SKPaymentQueue defaultQueue addTransactionObserver self SKPaymentQueue defaultQueue
  • Jsp中如何设置输入框的值

  • Kubernetes 集群未将外部 IP 公开为

    这是我的 service yaml 代码 kind Service apiVersion v1 metadata name login spec selector app login ports protocol TCP name http
  • 像管理电子书一样管理 Android 应用程序中的文本

    我正在开发一个application它看起来像一个电子书阅读器 但它不完全是一个电子书阅读器 我有一篇很大的文章 分为不同的章节 现在我想将该文本呈现为一本书 用户应该感受到阅读电子书的感觉 该电子书将具有各种功能 例如GoTo 搜索 目录
  • 's' 附近的语法不正确。字符串 ')' 后面的未闭合引号

    我在编程方面有点菜鸟 我想知道我在这里做错了什么 有人可以帮助我吗 我正在制作一个控制台应用程序 在其中同步两个数据库 但是当我尝试将数据插入表中时 它会抛出此异常 代码是 public static void AddInterationP
  • 获取redis中lua中的当前日期和时间

    如何获取嵌入在 Redis 中的 Lua 中的当前日期 时间 我需要采用以下格式 YYYY MM DD HH MM SS 尝试使用 os date 但它无法识别它 Redis 的 Lua 沙盒只有少数库 并且os不是其中之一 你可以调用Re
  • 没有连接的 AMQP/RabbitMQ 通道什么时候会死亡?

    我有一个简单的 RabbitMQ 测试程序 随机将消息排队 另一个读取它们 所有这些都使用 Spring AMQP 如果消费者死亡 例如 在没有机会关闭其连接或通道的情况下终止进程 则它尚未确认的任何消息似乎将永远保持未确认状态 我看过很多