2013-09-27 76 views
0

我的应用程序: activemq的使用者已在运行,因此如果Activemq中有消息并处理它,它将消耗。获取警报 - Activemq骆驼

我想获得警报如果在我的逻辑中有任何失败。首先,如果在我的逻辑中出现任何故障,然后发送到DLQ,我尝试重新发送我的消息3次,3次重新发送后,我希望通过邮件获得警报。点击sendMail.bat文件,我完成了发送邮件的代码。我在java中使用消费者代码,现在我想在消息转到DLQ之前运行sendMail.bat文件。这是我在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的位置?谁能帮我?

回答

0

如果您目前把你失败的消息ActiveMQ的:队列:ThermalMap.DLQ你可以做的是

改变你的ErrorHandler的deadLetterUri到ActiveMQ的:队列:ThermalMap.TMP

然后创建一个简单的路由将

  • ActiveMQ的消耗信息:队列:ThermalMap.TMP
  • 发送电子邮件
  • ,然后将消息发送到ActiveMQ的:队列:ThermalMap.DLQ

我敢肯定有很多其他的方法来完成你想要的东西。