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