Apache camel apachecamel/ActiveMQ优先级路由
我有两个具有相同消费者的AMQ队列。 第一个队列(Q1)处理97%的消息,另一个队列(Q2)仅处理3%。 问题是,Q2中的消息需要在消息排队后立即进行处理。 所以,我的问题是,当第二季度有消息可用时,我需要以某种方式暂停第一条路线,以便将其发送给消费者。 apache camel路由如下所示:Apache camel apachecamel/ActiveMQ优先级路由,apache-camel,activemq,Apache Camel,Activemq,我有两个具有相同消费者的AMQ队列。 第一个队列(Q1)处理97%的消息,另一个队列(Q2)仅处理3%。 问题是,Q2中的消息需要在消息排队后立即进行处理。 所以,我的问题是,当第二季度有消息可用时,我需要以某种方式暂停第一条路线,以便将其发送给消费者。 apache camel路由如下所示: <route id="q1"> <from uri="jms:recordAnalysisRequests" /> <to uri="bean:analysi
<route id="q1">
<from uri="jms:recordAnalysisRequests" />
<to uri="bean:analysisService" />
</route>
<route id="q2">
<from uri="jms:recordAnalysisRequestsFastTrack" />
<to uri="bean:analysisService" />
</route>
应该使用什么策略?
我不认为我可以使用重排序器,因为Q1可能会有数千条消息排队,并且我无法将所有消息都放入重排序器批处理中。
我正在查看路由节流,但我不知道如何进行。
我还想知道是否可以通过zookeeper节点进行同步。如果这个解决方案可行,我还需要一些指导。您可以将所有消息放在一个队列中,并使用消息优先级 第二个选项,使用驼峰重排序器
<route id="q1">
<from uri="jms:recordAnalysisRequests" />
<setHeader headerName="CustomPriority">
<constant>2</constant>
</setHeader>
<to uri="direct:analysisDirect" />
</route>
<route id="q2">
<from uri="jms:recordAnalysisRequestsFastTrack" />
<setHeader headerName="CustomPriority">
<constant>1</constant>
</setHeader>
<to uri="direct:analysisDirect" />
</route>
<route id="q3">
<from uri="direct:analysisDirect">
<resequence>
<header>CustomPriority</header>
<to uri="bean:analysisService" />
</resequence>
</route>
2.
1.
客户优先权
第三种选择(驼峰2.12),而不是使用重排序器,使用具有优先级阻塞队列的SEDA端点我遇到了一种情况,即当我有较慢的消费者,并且在第一季度可能有很多非优先级消息时:“注意,这种折衷可能会对性能产生重大影响,因此您必须彻底测试您的场景。”。因此,性能是我关心的问题。请注意,标签是独立的。也就是说,您不能组合多个标记来创建单个概念。标签
[apache]
和[camel]
一起与单个[apachecamel]
标签不同。务必阅读选择标签时出现的说明!