得到警报 - Activemq骆驼

时间:2013-09-27 08:05:11

标签: java spring apache-camel

我的应用程序: activemq的使用者已经在运行,因此如果Activemq中有消息并且正在处理它,它将消耗。

我想要警惕如果我的逻辑有任何失败。首先,如果我的逻辑中出现任何故障,我会尝试重新发送我的消息3次,然后发送到DLQ,在重新发送3次后,我希望通过邮件获得警报。我已经完成了通过单击sendMail.bat文件来发送邮件的代码。我在java中有消费者代码,现在我想在消息转到sendMail.bat之前运行DLQ文件。这是我在bean.xml中的代码。

<!-- here we configure our DeadLetterChannel -->
<bean id="myDeadLetterErrorHandler" class="org.apache.camel.builder.DeadLetterChannelBuilder">
    <property name="deadLetterUri" value="activemq:queue:ThermalMap.DLQ"/>
   <property name="redeliveryPolicy" ref="myRedeliveryPolicyConfig"/>
</bean>

<!-- here we set the redelivery settings -->
<bean id="myRedeliveryPolicyConfig" class="org.apache.camel.processor.RedeliveryPolicy">
    <property name="maximumRedeliveries" value="3"/>
    <property name="redeliveryDelay" value="250"/>
</bean>

<camelContext id="activeContext1" xmlns="http://camel.apache.org/schema/spring">
    <route startupOrder="1" errorHandlerRef="myDeadLetterErrorHandler">
        <from uri="activemq:queue:ThermalMap"/>
        <transacted/>
        <to uri="bean:msgPro1?Method=Processor1"/>
    </route>
 </camelContext>

让我们假设我将从java应用程序运行sendMail.bat文件。所以我要在我的应用程序(ActivemqCamel)中再创建一个java(TriggerMail.class)文件并执行我的sendMail.bat。我不知道在我的bean.xml中将TriggerMail.class链接到哪里?任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您当前将失败的消息发送到 activemq:queue:ThermalMap.DLQ ,您可以做的是

将errorHandler的deadLetterUri更改为 activemq:queue:ThermalMap.TMP

然后创建一个

的简单路线
  • 使用来自 activemq:queue:ThermalMap.TMP
  • 的消息
  • 发送电子邮件
  • 然后将消息发送到 activemq:queue:ThermalMap.DLQ

我确信还有很多其他方法可以达到你想要的效果。