首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何提高大队列的消息处理能力?

如何提高大队列的消息处理能力?
EN

Stack Overflow用户
提问于 2019-04-11 04:15:36
回答 3查看 293关注 0票数 0

我正在尝试使用Spring JMS和ActiveMQ来处理大量消息。问题的上下文如下:每个客户生成一组消息,这些消息被添加到队列中。将消息添加到队列中,并将客户id作为参数。

在一种情况下,客户A可以向队列添加10k条消息,而客户B只能向同一队列添加100条消息。我的问题是,客户B需要等到所有10k消息都完成处理后,才能处理它的100条消息。

有没有办法同时处理客户A的一些消息和客户B的一些消息?我知道可以对来自客户B的消息设置更高的优先级,但当有多个客户时,这并不能解决问题。拥有更多消息的客户将填满队列,而其他客户将不得不等待。

如果你能提供一些帮助或建议,我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-16 22:03:11

我想我已经找到解决这个问题的办法了。它涉及到使用消息组。对于每条消息,我用客户的标识符设置了属性JMSXGroupID。

因为它们是多个消息组,所以队列负责将来自不同组的消息分配给不同的使用者。这样,来自客户B的文档可以被处理,而来自客户A的文档仍在处理中。

票数 0
EN

Stack Overflow用户

发布于 2019-04-11 09:25:22

队列的基本语义是先进先出( FIFO)。没有真正的方法可以避免这种情况。我建议您重新设计您的应用程序以使用多个队列-每个队列对应于您拥有的每种“类型”的消息或独立的应用程序。

票数 1
EN

Stack Overflow用户

发布于 2019-04-11 16:24:42

我想说的是,你可以微调你的activemq批量处理的消息数量。此外,还有一些方法可以微调给定的代理和队列。有关更多详细信息,请参阅此链接:

http://activemq.apache.org/performance-tuning

https://access.redhat.com/documentation/en-US/Fuse_ESB/4.4.1/html-single/ActiveMQ_Tuning_Guide/index.html

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

https://stackoverflow.com/questions/55620671

复制
相关文章

相似问题

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