ActiveMQ 将现有队列转换为 CompositeQueue

ActiveMQ converting existing Queue to CompositeQueue

我会尽力解释这一点。

当我将从 ActiveMQ 队列接收的数据存储在几个不同的位置时,我决定构建一个复合队列,以便我可以单独处理每个位置的数据。

我 运行 遇到的问题是我目前在生产环境中有队列。似乎将名为 A 的队列更改为复合队列(也称为 A,具有名为 B 和 C 的虚拟目的地)会导致我丢失现有队列中的所有数据。它不会在启动时转发以前的消息。目前,我正在创建一个具有不同名称的新 CompositeQueue,比如 D,它将数据转发到 B 和 C。然后我有一些笨拙的代码阻止所有连接,直到我 a) 更新所有生产者以发送到 D 和 b ) 使用消费者从 A 中提取数据,并通过生产者将其发送给 D。

感觉比较乱。有没有办法解决?理想情况下,我将能够保持相同的队列名称,将其所有当前数据发送到复合子队列,并让队列只在最后转发。

根据给出的描述,期望的行为是不可能的,因为复合队列上的消息路由在消息传输时起作用,而不是稍后当该队列已经存储消息并且代理配置被更改时。您需要使用来自初始队列的过去消息(我猜是)并将它们发送到所需的目的地。