有没有办法在不重启代理的情况下添加和 运行 集群配置?

Is there a way to add and run a cluster configuration without rebooting the broker?

或者只有一种方法 - 将配置添加到 broker.xml 并重新启动代理,然后集群才能工作。我在 embeddedActiveMQ.getActiveMQServer() 中找到了 .getClusterManager() 方法,我可以用 ClusterManager 做吗?

更新

这种方式(clusterManager - stop - deploy - start)可以,但有时会出现以下异常

java.lang.IllegalStateException: Server locator is closed (maybe it was garbage collected)
    at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.assertOpen(ServerLocatorImpl.java:1848)
    at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:648)
    at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.connect(ServerLocatorImpl.java:549)
    at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.connect(ServerLocatorImpl.java:528)
    at org.apache.activemq.artemis.core.server.cluster.ClusterController$ConnectRunnable.run(ClusterController.java:433)
    at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
    at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
    at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.activemq.artemis.utils.ActiveMQThreadFactory.run(ActiveMQThreadFactory.java:118)

理论上是可以的。代理启动后,您需要使用 stop() 方法停止 ClusterManager。然后您可以更新代理的 Configuration,然后在 ClusterManager.

上调用 deploy()start()

我以前没有这样做过,所以您可能会遇到问题。事实上,停止和启动代理本身可能更简单、更安全。