0

我的应用程序: activemq 的消费者已经在运行,所以如果 Activemq 中有消息,它将消耗并处理它。

如果我的逻辑有任何故障,我想得到警报。首先,如果我的逻辑有任何故障,我会尝试重新发送我的消息 3 次,然后发送到DLQ3 次重新发送后,我想通过邮件获得警报。我已经完成了通过单击文件发送邮件的代码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>

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

4

1 回答 1

0

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

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

然后创建一个简单的路线

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

我相信还有很多其他方法可以完成您想要的。

于 2013-09-27T15:02:11.220 回答