如何仅在从设备在故障切换中变为活动状态时在从设备ActiveMQ上启动驼峰路由?

如何仅在从设备在故障切换中变为活动状态时在从设备ActiveMQ上启动驼峰路由?,activemq,failover,apache-camel,master-slave,Activemq,Failover,Apache Camel,Master Slave,我在嵌入式驼峰路由中有一个远程JMS队列的持久使用者。有可能采用主从配置进行这种路由吗?现在,骆驼路由似乎已经在从ActiveMQ启动时启动和激活,而不是在实际故障转移发生时启动和激活 现在,它会使从属实例接收同样发送到主实例的消息,这会导致故障转移时重复的消息到达队列 我将ActiveMQ 5.3与Apache Camel 2.1一起使用。这不应该是一个问题,因为从属服务器上的Camel上下文/路由在它成为主服务器(当主服务器释放消息存储文件锁时)之前不会启动。不幸的是,当从属代理服务器启动时

我在嵌入式驼峰路由中有一个远程JMS队列的持久使用者。有可能采用主从配置进行这种路由吗?现在,骆驼路由似乎已经在从ActiveMQ启动时启动和激活,而不是在实际故障转移发生时启动和激活

现在,它会使从属实例接收同样发送到主实例的消息,这会导致故障转移时重复的消息到达队列


我将ActiveMQ 5.3与Apache Camel 2.1一起使用。

这不应该是一个问题,因为从属服务器上的Camel上下文/路由在它成为主服务器(当主服务器释放消息存储文件锁时)之前不会启动。

不幸的是,当从属代理服务器启动时,CamelContext和路由也会启动。但是,您可以通过执行以下操作来完成此任务:

在随从属代理部署的camelContext上,添加以下AutoStart属性以防止路由启动:

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" autoStartup="false">

...

</camelContext>
然后在代理的配置文件activemq.xml中,添加以下内容以注册服务:

<services>
      <bean xmlns="http://www.springframework.org/schema/beans" class="com.fusesource.example.CamelContextService">
          <property name="camel" ref="camel"/>
      </bean>
</services>

现在,一旦从代理作为主代理接管,就会在服务类上调用start方法并启动路由


我也在这里发布了一篇关于这一点的博客:

使用驼峰路线策略,您可以根据自己的情况决定暂停/恢复某些路线。

现有的ZookeePerRoute策略可用于进行领导人选举。 (见本页底部)

<services>
      <bean xmlns="http://www.springframework.org/schema/beans" class="com.fusesource.example.CamelContextService">
          <property name="camel" ref="camel"/>
      </bean>
</services>