繁体   English   中英

IBM MQ 消息组

[英]IBM MQ message groups

我目前面临一个用例,我需要并行处理多条消息,但相关消息一次只能由一个 JMS 使用者处理。

例如,考虑消息 ABCDEF 和 DEFGHI,后跟一个序列号:

  • ABCDEF-1
  • ABCDEF-2
  • ABCDEF-3
  • DEFGHI-1
  • DEFGHI-2
  • DEFGHI-3

如果可能的话,我想让 JMS 消费者并行处理 ABCDEF 和 DEFGHI 消息,但绝不要同时跨两个或多个消费者处理两条 ABCDEF 或 DEFGHI 消息。 在我的用例中,消息的顺序无关紧要。 我不能使用 JMS 过滤器,因为我不会提前知道组名,并且拥有一个 static 组名列表是不可行的。 . 消息是通过不受我控制的系统发送的,组名总是由 6 个字母组成。

ActiveMQ 似乎通过他们的消息组功能实现了这一点,但我在 IBM MQ 中找不到等效的功能。 我的理解是,这种行为是由 JMSXGroupId 和 JMSXGroupSeq 标头驱动的,它们仅在 JMS 规范的可选部分中定义。

作为一种解决方法,我总是可以有一个集结地(也许是一个数据库),所有消息都放置在那里,然后在这个数据库上进行快速轮询,但是在这里添加一个额外的基础设施似乎有点矫枉过正。 此外,它也不允许我在发生故障时使用 JMS 事务进行重新处理。

对我来说,这似乎是消息传递体系结构中的一个常见用例,但我在网上的任何地方都找不到简单的“是/否”答案,而且 IBM MQ 文档也不太清楚是否支持此功能。

提前致谢

IBM MQ 也有消息组的概念。

IBM MQ 消息 header,称为消息描述符 (MQMD),其中有几个字段,JMS 组字段 map 到:-

  • JMSXGroupID -> MQMD GroupID 字段
  • JMSXGroupSeq -> MQMD MsgSeqNumber 字段

在这里阅读更多

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM