AMQP/RabbitMQ - 顺序处理消息

2024-01-03

我有一个direct交换。还有一个队列与该交换器绑定。

该队列有两个消费者。消费者完成相应的处理后,将手动确认消息。

消息按逻辑顺序/排序,并且应按该顺序进行处理。是否可以强制要求消费者 A 和消费者 B 按顺序接收和处理所有消息?换句话说,阻止A和B同时处理消息。

注:消费者是not共享相同的连接和/或通道。这意味着我无法使用<channel>.basicQoS(1);.

这个问题的基本原理:两个消费者是相同的。如果其中一个队列发生故障,另一个队列将开始处理消息,并且一切都会继续工作,无需任何必要的干预。


在需要冗余使用者但需要按特定顺序处理消息的情况下,处理故障转移的一种方法是在设置与队列的绑定时使用独占使用者选项,并让两个使用者不断尝试绑定,即使在他们无法获得独占锁。

过程是这样的:

  1. 消费者 A 首先启动并作为独占消费者绑定到队列。消费者 A 开始处理队列中的消息。
  2. 消费者B接下来启动并尝试作为独占消费者绑定到队列,但被拒绝,因为队列已经有独占消费者。
  3. 消费者 B 定期尝试获取队列上的独占绑定,但遭到拒绝。
  4. 托管消费者 A 的进程崩溃。
  5. 消费者 B 尝试作为独占消费者绑定到队列,这次成功了。消费者 B 开始处理队列中的消息。
  6. 消费者 A 重新上线,并尝试独占绑定,但现在被拒绝。
  7. 消费者 B 继续按 FIFO 顺序处理消息。

虽然这种方法不提供负载共享,但它确实提供了冗余。

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

AMQP/RabbitMQ - 顺序处理消息 的相关文章

随机推荐

  • 这个 Urikind.relative 到底是什么意思

    我正在做的是 当我选择一行并单击显示按钮时 我将有一个 datagridview 我想显示图像以及我编写以下代码的一些信息 public partial class WpfWindow Window private UCPersons uc
  • Python:如果目录是符号链接,则 getcwd 和 pwd 给出不同的结果

    如果我的工作目录是符号链接 os getcwd and os system pwd 不给出相同的结果 我想用os path abspath 故意获取我的工作目录 或其中的文件 的完整路径 而不是得到与以下结果相同的结果os path rea
  • 通过 Cisco VPN 更新存储库时,Subversion 报告“格式错误的网络数据”

    我正在使用 Cisco VPN 在 Windows 7 Ultimate 64 位上 连接到我的公司网络 当我检查 svn 存储库时 下载一些文件后 2 或 3 秒我不断收到此错误 该问题发生在 TortoiseSVN 1 5 9 和 Sl
  • 在 Visual Studio 中使用命令行参数进行调试

    我正在 Visual Studio 中开发 C 命令行应用程序 需要使用命令行参数对其进行调试 目前我只是使用我需要的参数运行生成的 EXE 文件 像这样program exe file txt 但这样我就无法调试 有没有地方可以指定调试参
  • SQL 选择最大 BY 组

    WEEK STUDENT CLASS TEST SCORE 1 1 A 1 93 1 1 A 2 97 1 1 B 1 72 1 1 B 2 68 1 1 C 1 93 1 1 C 2 51 1 1 H 1 19 1 2 A 1 88 1
  • 根据分组属性添加新列

    我想在 R 中添加一个新列 将我的子组总结为组 这是我的例子 id c 1 2 2 3 4 4 4 5 5 5 6 6 6 subgroup c lightred lightblue darkblue lightred darkred da
  • 检测处理器的数量

    如何检测 net 中物理处理器 核心的数量 System Environment ProcessorCount 返回逻辑处理器的数量 http msdn microsoft com en us library system environm
  • Linux内核中slab内存管理的缓存着色

    我最近读到有关slab系统的缓存着色的内容 但不明白 为什么为不同slab中的对象添加不同偏移量的缓存着色可以提高性能 我最初的猜测是 具有缓存偏移量的slab分配器 尝试将slab的第一个对象放在不同缓存颜色的内存中 如果客户端从这些sl
  • 如何覆盖已经有 !important 的 CSS 背景?

    我试图用时尚覆盖网站的背景 但它不起作用 网站的背景 css 也有一个 important 并且它是压倒性的 我的代码 body background image none important background black import
  • 有没有办法在 grpc 服务器端设置超时?

    无法从服务器端使 grpc 连接超时 客户端可能建立连接但保持保持 睡眠状态 从而导致 grpc 服务器连接挂起 服务器端有没有办法在一定时间后断开连接或设置超时 我们尝试从客户端断开连接 但无法从服务器端执行此操作 在这个链接中gRPC
  • 如何强制命令行使用 PHP 版本?

    我由 1and1 com 托管 并且我已将我的文件设置为使用 php5 进行解析 htaccess 但这仅适用于 apache 而不适用于命令行 命令行默认为服务器默认 php4 所以目前我无法设置计划任务以 php5 运行我的代码 有任何
  • .htaccess - 递归地将斜杠映射到下划线

    G day 正如标题所示 我正在尝试将网址格式设置为 this is mah page strucutre到文件this is mah page structure php 现在 我已经可以工作了 只是我不知道结构的深度 因此我需要进行一些
  • Julia 中 @sync @async 的并行性

    我有一些繁重的 csv 表 我想与 sync sync 宏并行导入 对此不太熟悉 我尝试了以下方法 import files sync async begin df1 CSV File libname df1 csv gt DataFram
  • Javascript 中基于区域设置的排序,以预定义的方式对重音字母和其他变体进行排序

    在芬兰语中 我们排序W after V 如英语 但是因为W不是芬兰本土字母 它被认为是一个变体V 它被排序为等于V 但在两个词之间唯一的区别是V is W then V 版本首先排序 一个例子说明了正确的顺序 Vatanen Watanen
  • OWIN创业班

    有人可以告诉我 OWIN 启动类的确切作用吗 基本上我正在寻找什么 它的目的是什么 何时调用 仅调用一次或每次请求 这是配置我的依赖注入库的好地方吗 Owin 被设计为可插拔设计 您可以从配置中更改 替换一组服务 例如在以下配置中 我有 启
  • 如何在iPhone的phonegap应用程序中的javascript中读取sqlite3的数据

    我正在 iPhone 的phonegap 中开发一个应用程序 其中我有一个sqlite3 数据库 其中包含纬度和经度值以及相应的区域名称 我已在应用程序中复制了 sqlite 数据文件 我需要从sqlite中获取数据并将表中的数据显示在视图
  • 重载运算符<<以接受模板函数

    我试图能够使用函数编写可扩展语法 但似乎找不到接受模板函数的正确语法 我使用的是 Visual C 2008 它将接受与模板函数相同类型的变量或类似的非模板函数 但不接受模板函数本身 错误 1 错误 C2679 二进制 class Gram
  • 所有运行的单元测试都以代码 0 (0x0) 退出,甚至没有命中断点

    我正在运行 Visual Studio 2017 15 9 程序已成功构建 但每次我右键单击 调试测试 时 编译器都会退出并显示以下消息 程序 xxxxx testhost x86 exe 已退出 代码为 0 0x0 调试输出屏幕和测试输出
  • 使用不连续索引进行 pyomo 优化

    我正在使用 pyomo 在 python 中进行优化 我计划使用 t start t end 范围内的索引 现在 这些 t start 和 t end 值是 EV 的函数 使得 m pyo ConcreteModel m EV pyo Ra
  • AMQP/RabbitMQ - 顺序处理消息

    我有一个direct交换 还有一个队列与该交换器绑定 该队列有两个消费者 消费者完成相应的处理后 将手动确认消息 消息按逻辑顺序 排序 并且应按该顺序进行处理 是否可以强制要求消费者 A 和消费者 B 按顺序接收和处理所有消息 换句话说 阻