首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JMS和JMSXGroupID的Oracle不会导致“粘性”消费者

使用JMS和JMSXGroupID的Oracle不会导致“粘性”消费者
EN

Stack Overflow用户
提问于 2021-05-04 21:53:31
回答 1查看 233关注 0票数 0

Apache ActiveMQ Artemis使用JMSXGroupId实现“粘性”消费者会话。使用相同JMSXGroupId排队的消息被发送给同一个使用者,使用FIFO,单线程。然而,这确实允许多个线程同时处理唯一的JMSXGroupId组--这是非常完美的--请参见下面的内容:

代码语言:javascript
复制
16:46:42.451 [Thread-4] INFO Log - This is Message 30 In JMSXGroup: Group C | To Thread Thread-4
16:46:42.451 [Thread-3] INFO Log - This is Message 283 In JMSXGroup: Group B | To Thread Thread-3
16:46:42.451 [Thread-3] INFO Log - This is Message 284 In JMSXGroup: Group B | To Thread Thread-3
16:46:42.451 [Thread-4] INFO Log - This is Message 31 In JMSXGroup: Group C | To Thread Thread-4
16:46:42.452 [Thread-4] INFO Log - This is Message 32 In JMSXGroup: Group C | To Thread Thread-4
16:46:42.452 [Thread-3] INFO Log - This is Message 285 In JMSXGroup: Group B | To Thread Thread-3

Oracle和Amazon没有表现出相同的“粘性”消费者行为。我在JMSSpecification中找不到任何特定的东西,只有JMSXGroupId用来将相关的消息分组在一起。

我的期望是,在设置JMSXGroupId时,所有JMS使用者都会表现出这种“粘性”行为,但情况似乎并非如此。

是否有人仅通过设置JMSXGroupId就能在Oracle / SQS中实现这种行为?或者JMSXGroupId的意图是允许consumer在去队列时使用selector?这似乎并不像在运行时需要识别的那样扩展,而ActiveMQ实现显然是这样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-06 13:56:11

JMS规范只规定应按顺序使用同一组中的消息。它并没有说明如何实现这个功能。

ActiveMQ Artemis通过将同一组中的所有消息分配给单个使用者(即您所称的“粘性”消费者)来实现消息分组。但是,其他JMS提供程序可以自由地以其他方式实现此功能。

如前所述,唯一的要求是按顺序使用同一组中的消息。如果您已经在Oracle AQ和Amazon上测试过此功能,并且有证据表明同一组中的消息没有按顺序使用,那么您应该联系这些提供者以获得支持。如果最终结果是相同的,那么简单地说它们的实现与ActiveMQ Artemis不同是无效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67392674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档