具有重试的事务执行程序?

时间:2010-09-02 14:29:12

标签: spring

请对以下内容提出一些建议:

我正在使用ThreadPoolTask​​Executor执行发送电子邮件等慢速外部任务。

我需要改进这个: 1)当一个任务被传递给执行器时,它必须等待执行它,直到至少传递操作的事务已经完成。 示例:当订单处理失败并在承诺

上生成异常时,我没有理由通过电子邮件发送内容

2)当任务失败时,会使用一些重试机制再次尝试该任务。 示例:发送电子邮件失败时,将在5,10分钟后重试,然后抛出异常。

如何处理这些问题?我应该只集成一些提供此功能的队列吗?..

1 个答案:

答案 0 :(得分:1)

我想说:是的,在消息传递基础设施中使用队列。

就我个人而言,我会使用Camel,因为我完全被Camel迷住了,并且如果我重新编程我的烤面包机,在早餐时将切片涂成金黄色,就会使用它。

由于您要发送邮件,无论如何它都将基于消息,因此使用基于消息的系统已经减少了阻抗不匹配。

现在,作为交易,重试和在死信队列中停放消息的事情是这些事情的标准。这很好,因为您可以通过重新提交来自死信队列的消息,在电子邮件服务器发生灾难时遇到麻烦。

集成ActiveMQ或Camel只是在弹簧配置中添加了几个依赖项和5-10行。

一旦它在那里,组织后台处理,通知远程系统,自动化电子邮件响应,通知系统管理员即将发生的厄运,......你发送消息,继续你正在做的事情,回应客户,在后台轮子正在转动。

好的,对不起:我被带走了,太抒情了。