首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ActiveMQ:如何使用自定义属性对队列中的消息进行重新排序

ActiveMQ:如何使用自定义属性对队列中的消息进行重新排序
EN

Stack Overflow用户
提问于 2020-03-01 01:03:21
回答 1查看 182关注 0票数 0

我们在项目中使用ActiveMQ,消息由不同的生产者同时写入到同一队列的ActiveMQ中。因此,排序是混乱的。消息在被消费者消费之前是否可以在队列中重新排序?

例如,producer A produced messages -> M1,M2,M3 (自定义头部属性为1,2,3)生产者B produced messages M3 -> M4,M5,M6 (自定义头部属性为4,5,6)。

由于竞争条件,我们将消息作为M1、M4、M5、M2、M3、M6发送到队列。

我们是否可以使用自定义标头属性按所需的顺序对消息进行重新排序,如: M1、M2、M3、M4、M5、M6?

注意:我们没有在我们的项目中使用Java。我们正在使用Mulesoft来生成和消费与ActiveMQ之间的消息。

我已经看到了与我们的问题类似的this link,但当我按照步骤操作时,链接中提供的解决方案不是很清楚,或者更确切地说是不起作用。

EN

回答 1

Stack Overflow用户

发布于 2020-03-01 02:03:51

如果无法确保消息以正确的顺序发送,那么Camel's resequencer是一个很好的解决方案。下面是一个简单的例子:

代码语言:javascript
运行
复制
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="activemq:queue:unordered"/>
    <resequence>
      <simple>in.header.seqnum</simple>
      <to uri="activemq:queue:ordered" />
      <stream-config capacity="5000" timeout="4000"/>
    </resequence>
  </route>
</camelContext>

此路由将从unordered队列中读取消息,然后根据消息头seqnum对它们进行重新排序,然后将它们发送到ordered队列。因此,您的应用程序应该从ordered队列中读取重新排序的消息。

Camel documentation非常全面,因此您应该参考它以获取更多详细信息。

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

https://stackoverflow.com/questions/60467573

复制
相关文章

相似问题

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