【问题标题】:Re-ordering of messages - Artemis消息的重新排序 - Artemis
【发布时间】:2018-04-30 04:56:12
【问题描述】:

我必须运行从“queue-1”读取消息并将它们写回另一个队列“queue-2”的同一应用程序的两个实例。

我需要两个队列中的消息按特定属性(序列号)排序,该属性最初由生产者添加到每条消息中。根据文档,在 queue-1 内,消息的顺序将被保留,因为消息是由单个生产者发送的。但是由于有多个消费者读取、处理并将处理过的消息发送到 queue-2,queue-2 中的消息顺序可能会丢失。

所以我的任务是确保消息按照从队列 1 中读取的顺序传递到队列 2。我已经从 Apache camel 实现了重新排序器模式,以重新排序 queue-2 中的消息。重新排序器工作正常,但由于骆驼路由在本地运行,因此会导致数据传输开销。

考虑以更好的方式做这件事,我有三个问题:

  1. artemis 是否固有地支持在 使用序列号等属性进行队列。
  2. 是否可以在服务器内部运行路由?如果是的话,你能 举个例子或提供文档链接?
  3. 一些 artemis 功能,例如转向(拆分)需要修改 代理配置(broker.xml 文件),有没有办法做到这一点 以编程方式和动态方式,因此我可以决定何时开始 转移消息?我知道这可以通过使用骆驼来完成, 但我希望一切都在服务器中运行。

【问题讨论】:

    标签: jms messaging activemq-artemis


    【解决方案1】:

    artemis 本身是否支持使用序列号等属性对队列中的消息进行重新排序。

    没有。在我看来,Camel 确实是最好的解决方案。

    是否可以在服务器内部运行路由?如果是,您能否举个例子或提供文档链接?

    您应该能够使用带有 Camel 上下文的 Web 应用程序在 Artemis 中执行与在 ActiveMQ 5.x 中相同的操作。 5.x 文档是here

    一些 artemis 功能,如转移(拆分)需要修改代理配置(broker.xml 文件),有没有办法以编程方式和动态地完成它们,以便我可以决定何时开始转移消息?

    您可以使用 Artemis 管理方法在运行时以编程方式(或管理方式)创建、修改和删除转移。但是,这些修改将是不稳定的(即它们不会在代理重新启动后继续存在)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      相关资源
      最近更新 更多