gpt4 book ai didi

java - HornetQ:顺序消费分布式队列

转载 作者:行者123 更新时间:2023-12-01 13:47:45 25 4
gpt4 key购买 nike

对于当前的项目,我尝试使用 JBoss 7.1 和 HornetQ (JMS) 设置以下场景,我认为这是一个相当常见的用例:有三个应用程序服务器。多个MDB应各自处理一个冗长计算过程的分解片段,任务应分布在三个服务器之间。当一个片段完成并且相应的结果准备就绪时,应将结果发送到分布式队列,从那里消耗它并组装总结果。为了避免总结果组装期间的竞争条件,“结果”队列必须按顺序处理,尽管它可能分布在多个服务器之间。当另一条消息仍在处理时,结果队列中的任何消息都不能被处理。管理约束是使用结果队列中的消息的使用者(MDB 或 session Bean)可以部署在所有集群节点上,即部署在集群节点上的 EAR 是相同的。在这种情况下,相同的消费者代码将部署在每个节点上。还有办法同步访问队列吗?

最佳答案

我不完全理解您的用例,但听起来您需要消息分组。

http://docs.jboss.org/hornetq/2.4.0.beta1/docs/user-manual/html/message-grouping.html

如果您用更简单的内容编辑您的问题,我可以理解而无需深入研究您的测试用例,我也许可以为此答案添加更多信息。

您还谈到了漫长的过程。听起来您可能有客户端正在缓冲。看看如何通过在 serverLocator 上设置 Consumer-window-size=0 来处理缓慢的消费者。

hornetq 上的这个示例说明了如何实现这一点:

http://docs.jboss.org/hornetq/2.4.0.beta1/docs/user-manual/html/examples.html#examples.no-consumer-buffering

关于java - HornetQ:顺序消费分布式队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20226244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com