0

我有一个消息具有属性名称 orderno 的队列我如何从按 orderno 排序的队列中获取消息

4

1 回答 1

2

你要做的真的是resequencer企业集成模式

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

您需要做的是将以下内容添加到 ActiveMQ 中的“camel.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"/>

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

于 2012-10-11T09:41:41.060 回答