【发布时间】:2018-04-30 04:56:12
【问题描述】:
我必须运行从“queue-1”读取消息并将它们写回另一个队列“queue-2”的同一应用程序的两个实例。
我需要两个队列中的消息按特定属性(序列号)排序,该属性最初由生产者添加到每条消息中。根据文档,在 queue-1 内,消息的顺序将被保留,因为消息是由单个生产者发送的。但是由于有多个消费者读取、处理并将处理过的消息发送到 queue-2,queue-2 中的消息顺序可能会丢失。
所以我的任务是确保消息按照从队列 1 中读取的顺序传递到队列 2。我已经从 Apache camel 实现了重新排序器模式,以重新排序 queue-2 中的消息。重新排序器工作正常,但由于骆驼路由在本地运行,因此会导致数据传输开销。
考虑以更好的方式做这件事,我有三个问题:
- artemis 是否固有地支持在 使用序列号等属性进行队列。
- 是否可以在服务器内部运行路由?如果是的话,你能 举个例子或提供文档链接?
- 一些 artemis 功能,例如转向(拆分)需要修改 代理配置(broker.xml 文件),有没有办法做到这一点 以编程方式和动态方式,因此我可以决定何时开始 转移消息?我知道这可以通过使用骆驼来完成, 但我希望一切都在服务器中运行。
【问题讨论】:
标签: jms messaging activemq-artemis