Spring 群集实例上嵌入的ActiveMQ

Spring 群集实例上嵌入的ActiveMQ,spring,activemq,cluster-computing,mule-studio,Spring,Activemq,Cluster Computing,Mule Studio,我正在实施一个项目,其中ActiveMQ嵌入在集群实例中,模式数据库在MuleSoft 3.5.1中共享。 代理已经配置了Springbean <spring:beans> <spring:bean class="org.apache.activemq.xbean.BrokerFactoryBean" id="broker"> <spring:property value="classpath:testActivemq.xml

我正在实施一个项目,其中ActiveMQ嵌入在集群实例中,模式数据库在MuleSoft 3.5.1中共享。
代理已经配置了Springbean

<spring:beans>
    <spring:bean class="org.apache.activemq.xbean.BrokerFactoryBean"
        id="broker">
        <spring:property value="classpath:testActivemq.xml"
            name="config" />
        <spring:property value="true" name="start" />
    </spring:bean>
</spring:beans>

我已经在本地mule服务器上独立测试了该系统,以模拟集群

问题是,当我将部署作为第一个代理时,它会在表上获取一个独占锁,以确保没有其他ActiveMQ代理可以同时访问数据库,但另一个代理没有完成部署过程,因此当我尝试取消部署第一个代理时,服务器将进入阻塞状态。
如何解决我的问题

您看到的是ActiveMQ内置的主从功能。要在同一个VM中启动多个代理,需要将它们的存储位置指向不同的数据库(如果使用JDBC存储)或文件系统位置(如果使用KahaDB或LevelDB)

有关如何执行此操作,请参见以下内容:

  • JDBC
  • 卡哈卜
  • LevelDB

与其取消部署,不如尝试关闭该实例上的activemq,并检查从属服务器是否可以获得锁,如果activemq已进入该实例,如何关闭该实例上的activemq?要关闭ActiveMQ嵌入式实例,唯一的方法是在Mule服务器上取消部署项目。你同意吗?好的,我明白了,需要找到其他方法我可以构建一个流来启用ActiveMQ代理,并使用Quartz组件延迟,以允许部署结束到第二个代理。石英如何在集群中工作?其他解决方案?