ActiveMQ防止消费者处理特定消息

时间:2018-07-01 14:14:07

标签: activemq

我们面临如下情况的设计挑战:

有多个生产者和多个消费者(在同一队列中)。

每条消息代表一个任务,其中包含消费者需要处理的参数。

问题在于某些任务需要占用大量内存(和cpu功能),我们知道使用者没有能力处理此任务。好处是,我们知道它大约可以预先占用多少内存(和cpu功能),因此我们可以防止某个使用者执行该任务,并让其他使用者拥有足够的内存来进行更改。

有预取设置,但我看不到如何配置才能满足此要求

最后,我找到了 rollback 事务的选项,因此使用者可以基本上检查它是否具有足够的硬件资源来处理任务,如果没有回滚,则可以将消息检索回队列以允许下一个使用者使用拿走等等。

不确定这是正确的方法还是更好的方法?

1 个答案:

答案 0 :(得分:0)

消息可以设置属性,以指示它们是否需要较高的CPU和/或内存,然后消费者可以使用选择器仅接收符合其硬件限制的消息。