activemq如何从特殊顺序的队列中获取消息

时间:2012-10-11 07:03:06

标签: jms activemq

我有一个队列,消息的属性名称为orderno 如何从orderno

排序的队列中获取消息

1 个答案:

答案 0 :(得分:2)

你想要做的是resequencer enterprise integration pattern

您可以使用与ActiveMQ捆绑在一起的Apache Camel来实现这一目标。

您需要做的是将以下内容添加到ActiveMQ中的'cameral.xml'配置文件中。

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="activemq:queue:unordered"/>
    <resequence>
       <simple>in.header.orderno</simple>
       <to uri="activemq:queue:ordered" />
       <stream-config capacity="5000" timeout="4000"/>
    </resequence>
  </route>
</camelContext>

然后确保该文件包含在ActiveMQ配置中,例如activemq.xml:

<import resource="camel.xml"/>

请注意,此设置将从“无序”队列中以任何顺序读取消息,而您的应用程序应从“已排序”队列中读取重新排序的消息。