我的应用程序: 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
链接到哪里?任何人都可以帮助我吗?
答案 0 :(得分:0)
如果您当前将失败的消息发送到 activemq:queue:ThermalMap.DLQ ,您可以做的是
将errorHandler的deadLetterUri更改为 activemq:queue:ThermalMap.TMP ,
然后创建一个
的简单路线我确信还有很多其他方法可以达到你想要的效果。