Apache Camel - 收听路线事件,例如完成路线

时间:2012-08-20 20:53:54

标签: apache-camel

我遇到了驼峰的一个特殊要求,我正在处理一组文件,当发生任何异常时,我会向异常队列发送一条消息,并从异常队列中发送有关失败的电子邮件,功能工作正常,但我最终发送了很多邮件,如果10个文件失败我发送10封电子邮件,有没有办法只发送一封邮件,就像我想等待整个路线完成,然后去看看例外排队并发送一封邮件,说明失败的原因(通过处理异常队列)

我愿意接受建议。

1 个答案:

答案 0 :(得分:2)

我必须做一次这种情况(反过来 - 邮件成功)。我有一个方便的MySQL数据库配置和准备好,所以我只是将每个事件从队列添加到数据库。然后每隔一段时间,提取所有信息(并删除它) - 从数据库中简单地select * from events; delete from events;并创建一个邮件。

您可以使用聚合器模式处理错误队列,这对于这些任务非常好。 http://camel.apache.org/aggregate-example.html。您仍然需要知道聚合器何时应该触发消息。如果可以,触发“完成,发送邮件”事件,例如上面链接中的示例。

最简单的方法是安排这些邮件通知。看看:http://camel.apache.org/simplescheduledroutepolicy.html。您可以将其设置为运行您的路径以获得一些好的时间选择,然后当它启动时,您将aggreator设置为在超时时完成,并使超时足够好以清空任何合理的队列大小的错误,但不能太大。

至少这是我对你的问题的建议