我在camel中遇到了一个特殊的需求,我正在处理一组文件,当任何异常发生时,我会发送一条消息到异常队列,然后从异常队列中发送一封关于失败的电子邮件,功能运行良好,但我最终发送了许多邮件,比如如果10个文件失败,我发送了10封电子邮件,有没有一种方法只发送一封邮件,比如我想等待整个路由完成,然后查看异常队列并发送一封邮件,说明失败的是什么(通过处理异常队列)
我很乐意听取大家的建议。
发布于 2012-08-21 06:52:27
我不得不在这个场景中做一次(相反,成功时发送邮件)。我已经配置好了一个方便的MySQL数据库,所以我只需将队列中的每个事件添加到数据库中。然后,每隔一段时间,提取所有信息(并删除它)-简单地从数据库中select * from events; delete from events;并创建一封邮件。
你可以使用聚合器模式来处理错误队列,这对于这些任务来说是非常好的。http://camel.apache.org/aggregate-example.html。您仍然需要知道聚合器何时应该发出消息。如果可以,触发"finish,send mail“事件,如上面链接中的示例所示。
最简单的方法是安排这些邮件通知的时间。看看:http://camel.apache.org/simplescheduledroutepolicy.html。您可以将其设置为在某个合适的时间内运行您的路由,然后当它启动时,您可以将aggreator设置为在超时时完成,并使超时足够好,以清空任何合理队列大小的错误,但不要太大。
至少这是我对你的问题的建议
https://stackoverflow.com/questions/12044989
复制相似问题