如何在mule esb中检查Active MQ是否以连续的间隔启动?

时间:2015-10-01 06:39:41

标签: jms mule activemq

我在一个队列中有消息,需要发送到其他队列(目标),这两个队列都是活动的MQ。目的地关闭时,消息将在源队列中。我需要连续检查目的地是否正常。如果它已经启动我需要发送到目的地。我在检查目的地可用性方面遇到困难.., 请帮帮我。谢谢..,

1 个答案:

答案 0 :(得分:2)

我认为一般来说,使用transactions可以最好地解决这类问题。

我假设您正在使用两个不同的ActiveMQ代理,这导致目标队列无法使用。

在最简单的情况下,您可以通过这种方式实现目标:

  1. 启动JMS事务
  2. 从代理1上的队列A接收消息
  3. 执行任何必要的逻辑和/或转换
  4. 将消息发布到代理2上的队列B
  5. 如果成功,请提交您的JMS事务
    • 如果没有,请回滚您的JMS事务
  6. 示例:

    <flow name="simpleExample">
        <jms:inbound-endpoint queue="queueA" connector-ref="broker1">
            <jms:transaction action="ALWAYS_BEGIN"/>
        </jms:inbound-endpoint>
        <flow-ref name="doLogic" />
        <jms:outbound-endpoint queue="queueB" connector-ref="broker2">
            <jms:transaction action="ALWAYS_JOIN" />
        </jms:outbound-endpoint>
    </flow>
    

    发生回滚时,此方法将立即重试。如果要在再次尝试之前控制等待的时间,请为Broker 1配置redelivery policy on the ActiveMQ connector