我必须运行同一应用程序的两个实例,它们从"队列-1"读取消息并将消息写回另一个队列"队列-2"。
我需要两个队列中的消息按特定属性(序列号)排序,该属性最初由生产者添加到每条消息中。根据文档,在队列-1中,消息的顺序将保留为消息由单个生产者发送。但是,由于有多个消费者读取、处理并将处理后的消息发送到队列-2,队列-2内的消息顺序可能会丢失。
因此,我的任务是确保消息以与从队列1读取消息相同的顺序传递到队列2。我已经从Apachecamel中实现了重新排序器模式,以便在queue-2中重新排序消息。重新定序器工作良好,但由于骆驼路由在本地运行,导致数据传输开销。
考虑用更好的方式来做,我有三个问题:
- artemis是否固有地支持在使用序列号等属性排队
- 是否可以在服务器内部运行路由?如果是,你能举个例子或提供文档链接
- artemis的一些特征,如分流(分流)需要修改broker配置(broker.xml文件),有没有办法做到这一点通过编程和动态方式,以便我可以决定何时启动转移信息?我知道这可以用骆驼来完成,但我希望所有的东西都在服务器上运行
artemis是否固有地支持使用序列号等属性对队列内的消息进行重新排序。
否。在我看来,Camel确实是最好的解决方案。
是否可以在服务器内运行路由?如果是,您能举一个例子或提供文档链接吗?
您应该能够在Artemis中使用带有Camel上下文的web应用程序执行与ActiveMQ 5.x中相同的操作。5.x医生来了。
一些artemis功能,如分流(split)需要修改代理配置(broker.xml文件),有没有一种方法可以通过程序和动态方式进行修改,以便我可以决定何时开始分流消息?
您可以在运行时使用Artemis管理方法以编程方式(或管理方式)创建、修改和删除转移。然而,这些修改将是不稳定的(即,它们将无法在代理重新启动后幸存下来)。