1

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

我愿意接受建议。

4

1 回答 1

2

我不得不做一次这个场景(虽然相反 - 成功发送邮件)。我已经配置并准备好了一个方便的 MySQL 数据库,所以我只是将队列中的每个事件添加到数据库中。然后不时地提取所有信息(并将其删除) - 只需select * from events; delete from events;从数据库中提取并创建邮件。

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

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

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

于 2012-08-20T22:52:26.860 回答