与竞争的消费者顺序处理消息

2024-05-10

Problem:

  • 我以特定顺序(FIFO)在队列上接收消息(比如订单)
  • 我的队列中有竞争的消费者
  • 为了进一步增加复杂性,消费者可能只对订单的特定版本感兴趣,具体取决于其状态。(例如版本 1、版本 2 和版本 5)
  • 订单版本号在订单上可用,但不能用于排序,因为我的听众可能不对所有版本感兴趣(消费者可能只对版本感兴趣,比如版本1、版本2和版本5)

我如何确保按照收到消息的顺序处理消费者之间的消息?


您不能使用多个消费者,至少不能使用基础 JMS。您需要提供逻辑。

我想到的解决方案都很糟糕,因为它利用了异步集成的优点并试图使其同步。对于每个附加了版本的“对象”或“消息”或“类型”,您可以跟踪您收到的版本并尝试保证它们按顺序处理。如果消费者无序地接收到它们,消费者可以停止在其轨道上或者可以重新对消息进行排队,但这两种解决方案都有一些令人讨厌的地方。

如果有一组有限的受版本控制的对象,并且您可能多次看到这些对象,则可以使用消息选择器来确保给定的使用者是唯一看到该特定 ID 的消息的使用者。

如果您的 JMS 提供程序支持优先队列,您可以分配不同的优先级,并希望这按适当的顺序提供它们,但即使这样似乎也会附加一个竞争条件。

我会再次问这个问题:您使用的技术正确吗?

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

与竞争的消费者顺序处理消息 的相关文章

  • com.ibm.msg.client.jms.DetailedJMSException:JMSWMQ0018:无法使用连接模式“yyy”和主机名“zzz”连接到队列管理器“xxx”

    JMS 应用程序需要七个参数才能与此处给出的 MQ 系列成功建立 SSL 连接 https github com ibm messaging mq tls ssl wizard blob master com ibm mq ssl wiza
  • Yegge 的原型模式示例如何处理实例变量?

    我喜欢史蒂夫 耶吉的原型模式示例 http steve yegge blogspot com 2008 10 universal design pattern html并决定快速制作一个概念验证示例 不过 我并没有真正考虑清楚 虽然它非常适
  • 通过 Javascript 不断查询服务器 - 好主意吗?

    我有一个小型网站 大约有 5 到 10 名管理员 我已将其设置为监视每个管理员正在执行的操作 添加项目 删除项目等 我的管理面板中有一个列表 显示了集体管理部门之前执行的 10 项活动 今天 我决定每 30 秒进行一次自我更新 我的问题很简
  • 这种模式叫什么?软锁?

    这是我有时必须编写的一些代码 大部分与 UI 内容结合使用 并且总是与可能意外陷入无限循环的事件相关 public class MyClass public event EventHandler MyEvent private bool I
  • 在 Spring Singleton 中创建新实例会导致内存泄漏吗?

    我目前正在维护一个应用程序 并注意到许多在 Spring 接线中定义为 Singleton 的对象在其方法中创建了其他对象的新实例 例如 有一个 LoginService Singleton 每次调用 login 方法时都会创建 Login
  • 为什么我们需要将 delegate 设置为 self?为什么编译器不默认它?

    I think我完全理解授权的概念 我的问题是 当我们这样做时 class someViewController UIViewController UITableViewDelegate 会吗ever可能我们不想设置tableView de
  • 存储库模式和 Linq to sql

    我正在尝试使用角色表 用户表和具有用户 ID 角色 ID 的外部参照表来实现用户身份验证和授权 为了实现通用存储库来更新角色 插入角色 添加用户 将用户添加到角色 更新用户 更新用户角色 验证用户 添加用户会话进行审核等 我是否需要为每个存
  • 使 Web 表单输入在各种情况下安全的正确方法是什么?

    你们都认为什么是正确的 阅读 最灵活 松散耦合 最健壮等 方法来使来自 Web 的用户输入安全地用于 Web 应用程序的各个部分 显然 我们可以为每个上下文 数据库 屏幕显示 保存在磁盘上等 使用各自的清理功能 但是是否有一些通用的 模式
  • 策略、访问者和模板方法模式之间有什么区别?

    我在课堂上刚刚学习了这些设计模式 但是我看不出它们之间有什么区别 它们听起来是一样的 都是在抽象类之上创建具体类 有人可以帮我打消这个疑虑吗 谢谢 访问者 策略和模板模式都包含算法的应用 最大的区别在于它们是如何被唤起以及如何在实践中使用的
  • F#:模式构成?

    我正在尝试编写一个由另外两个模式组成的模式 但我不确定如何去做 我的输入是字符串列表 文档 我有一个与文档标题匹配的模式和一个与文档正文匹配的模式 该模式应该匹配整个文档并返回标题和正文模式的结果 您可以使用以下命令一起运行两个模式 您在问
  • 如何将表值从一个数据库插入到另一个数据库? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想要一个查询将记录从一个表插入到不同数据库中的另一个表 如果目标表已经存在 它应该将记录附加到表的末尾 这个怎么样 USE Targ
  • scala sbt 在多项目上测试运行设置和清理命令一次

    我知道我可以通过修改 testOptions 在 sbt 中添加设置和清理代码以用于测试阶段 例如 val embedMongoTestSettings Seq Setting Seq testOptions in Test Tests S
  • 为什么以及如何避免事件处理程序内存泄漏?

    通过阅读 StackOverflow 上的一些问题和答案 我刚刚意识到 使用以下命令添加事件处理程序 在 C 或者我猜 其他 net 语言 中可能会导致常见的内存泄漏 我过去多次使用过这样的事件处理程序 但从未意识到它们可能会导致或已经导致
  • java 中带有子类化的单例

    在 Java 中实现单例的最常见方法是使用私有构造函数和以下形式的公共访问器方法 public class Singleton private static Singleton instance null private Singleton
  • 如何制作抗崩溃的ios应用程序

    我现在正在编写 ios 应用程序一段时间 但我的应用程序仍然经常崩溃 并且需要时间才能使它们变得非常稳定 我觉得这很烦人 那么 有没有关于防崩溃编程ios应用程序的编程模式呢 打开编译器警告 删除所有警告 运行静态分析器 删除所有警告 使用
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 在 JBoss EAP 5.1 中为特定 MDB 配置 maxSession 属性

    如何使 MDB 的 maxSession 值可由用户配置 有一个 MDB 侦听来自特定队列的消息 它被定义为注释 ActivationConfigProperty propertyName maxSession propertyValue
  • 如何在没有接口的情况下模拟多重继承?

    如何在不使用接口的情况下在 C 中模拟多重继承 我确实相信 接口能力不适用于此任务 我正在寻找更多面向 设计模式 的方式 就像 Marcus 所说 使用接口 扩展方法来制作像 mixins 这样的东西可能是你目前最好的选择 另请参阅 使用接
  • 批量消费JMS消息

    The MessageListener接口只定义了一个方法onMessage接收单个Message作为论证 我正在寻找一种方法来获得多个Messages 从队列中 以便我可以处理该批次 然后确认所有Message批次中的 s JMS世界里有
  • DI Control-Freak 反模式:难以理解

    我正在阅读 Mark Seemann 写的 NET 中的依赖注入 但我无论如何也无法理解这一点 虽然new当涉及到 VOLATILE 时 关键字是一种代码味道 依赖性 您无需担心将其用于稳定 依赖性 这new一般来说 关键字不会突然变得 非

随机推荐

  • WinForms 本地化。该语言不反映默认的 resx 文件

    我正在尝试在 winform 应用程序中使用本地化 但有几个问题 我本想问最复杂的问题 但现在我遇到了一个基本问题 我已经构建了一个带有表单 标签和菜单条的基本 winform 我已将表单本地化设置为 true 并将标签文本设置为三种不同的
  • 在 xcode 4 中找不到 info.plist

    所以常规介绍 我是 Objective C 的新手 到处搜索但找不到 所以请帮忙 我想做的就是将我的应用程序设置为在后台获取位置更新 就是这样 我知道我应该在项目的 info plist 文件中将位置添加到 UIBackgroundMode
  • 如何更改 CIFilter CIQRCodeGenerator 过滤器的背景色和前景色

    我正在尝试为 OS X 制作一个 QR 码生成器 但我还没有成功制作一个比黑白 QR 码更丰富多彩的 QR 码我正在使用 CIImage 过滤器的 CIQRCodeGenerator 我将如何制作这个工作我有一个示例代码 已在我的应用程序中
  • Android:是否有一种简单的方法可以为视图创建圆角,而不必每次都创建单独的可绘制对象?

    我在互联网上浏览了各种解决方案 这些解决方案使我们能够创建带有圆角的视图 其中大多数需要使用创建自定义视图 或者每次我们需要圆角视图时都需要在 xml 或九个补丁中创建可绘制对象 问题是 当我实现此类视图时 我需要为每个此类视图创建一个可绘
  • 如何在 Linux 中使用单行命令获取 Java 版本

    我想通过单个命令获取 Linux 中的 Java 版本 我是 awk 的新手 所以我正在尝试类似的事情 java version awk print 3 但这不会返回版本 我将如何获取1 6 0 21从下面的Java版本输出 java ve
  • Keras 服装回调。生成精确召回时,我在 _flow_index 中收到错误

    我正在使用 Keras 训练二元分类器 我想在每个时期后生成 precision score 和 recall score 以便更深入地分析训练 在互联网上我找到了教程 帮助 例如 https medium com thongonary h
  • 我如何在 ANSI C 中实现类似于 Objective-C @encode() 编译器指令的东西?

    encode 指令返回一个 const char 它是传入的数据类型的各个元素的编码类型描述符 示例如下 struct test int ti char tc printf s encode struct test returns test
  • 使用 laravel 检查活动用户状态

    这是非常标准的登录功能和验证 效果很好 但我还想检查用户是否处于活动状态 我在用户表中设置了一列 并将 活动 设置为 0 或 1 public function post login input Input all rules array
  • 不使用窗口函数实现 SQL 查询

    我读过 可以通过创造性地使用连接等来实现在 SQL 窗口函数中可以执行的任何操作 但我不知道如何实现 我在这个项目中使用 SQLite 它目前没有窗口函数 我有一个有四列的表 CREATE TABLE foo id INTEGER PRIM
  • 如何在 Groovy 中设置最后一个字段

    我有一个在 groovy spock 中测试的 java 类 java 类有一个final 字段 private static final log Logger getLogger 我想测试一个方法是否使用此记录器 最好使用模拟 问题是这个
  • 如何从 ASP.NET 中的 DetailsView 控件获取值?

    我的页面上有详细信息视图 我设置DefaultMode Edit 现在我想获取用户将在此单元格中编辑的值
  • 在 Laravel 5.4 中选择下拉列表的选定值

    我有一个名为 名称 的下拉列表 用户将在其中选择其中一个 提交后 如果出现一些错误 那么我想选择所选的名称 我在 laravel 5 4 中使用它 控制器 info DB table designation gt where status
  • Flutter - 每次应用程序重新启动后保留变量的值

    在我的一页上 我希望我的用户从一个变量上的默认文本开始 codeDialog 然后我希望他们更改该文本 之后他们编写的文本将成为我的新默认文本 遗憾的是我无法让它发挥作用 现在 当我重新启动应用程序并打开该屏幕时 它会重置为null 我认为
  • PHP 特性 - 定义通用常量

    定义可由命名空间内的多个类使用的常量的最佳方法是什么 我试图避免过多的继承 因此扩展基类不是理想的解决方案 并且我正在努力寻找使用特征的良好解决方案 这在 PHP 5 4 中是否可行 或者应该采取不同的方法 我有以下情况 trait Bas
  • 记录此异常并处理它,或者使用一些上下文信息重新抛出它

    有人可以帮我解释为什么 SonarLint 会显示这个 要么记录此异常并处理它 要么使用一些上下文信息重新抛出它 对于下面的代码 public static
  • 如何在 Hadoop 中将 String 对象转换为 IntWritable 对象

    我想转换String反对IntWritableHadoop 中的对象 任何过程都可以进行转换 IntWritable value new IntWritable Integer parseInt someString 并处理以下可能性par
  • android widget 和 localservice 绑定

    我编写播放器 它的主要活动是运行本地服务 我找不到如何将本地服务绑定到小部件 当我尝试像在活动中一样绑定它时 它失败了 请帮助我 添加 1 何时可以联系后台服务 http www developer com ws data article
  • NSAttributedString 和表情符号:位置和长度问题

    我正在使用 NSAttributedString 对来自 API 的文本的某些部分 如 Twitter 上的 mention 进行着色 API 为我提供了文本和代表文本中应着色的部分 或链接 标签等 的实体数组 但有时 颜色会因为表情符号而
  • Scala - Java = ? (或者 Clojure - Java = ?)

    开发人员可以在不懂 Java 的情况下使用 Scala 吗 开发人员可以在不懂 Java 的情况下使用 Clojure 吗 注意 例如 我是一名 C 开发人员 我在不了解任何 VB 的情况下使用 NET 当然 WF 4 0 使用 VB 进行
  • 与竞争的消费者顺序处理消息

    Problem 我以特定顺序 FIFO 在队列上接收消息 比如订单 我的队列中有竞争的消费者 为了进一步增加复杂性 消费者可能只对订单的特定版本感兴趣 具体取决于其状态 例如版本 1 版本 2 和版本 5 订单版本号在订单上可用 但不能用于