如何通过重试将Java Spring Flow转换为Spring Integration Work Flow?

时间:2016-03-08 00:56:02

标签: java spring spring-integration

我在Spring组件类中有一个非常简单的方法

@Service("wsOrderCreationService")
public class WsOrderCreationServiceImpl implements WsOrderCreationService {
...
public void saveLedger(SdiOrderSkuLedger orderSkuLedger)    {
    sdiOrderSkuLedgerService.save(orderSkuLedger);
}

我想对此方法应用重试,但我不能使用spring-retry 1.1.12,因为我的核心Spring版本是3.0,而spring-retry的较低版本不允许使用XML配置。我们在此应用程序中成功使用Spring Integration并重试,因此我正在考虑将此方法转换为SI工作流程。这种转换的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

我猜你可以在RequestHandlerRetryAdvice <request-handler-advice-chain>中使用<service-activator>

从另一方面,您可以为某些<gateway>构建类似service-interface的内容,并在您的某些服务中将该接口用作集成前端。

因此,您需要的是<gateway>,它会向<service-activator>发送带有RequestHandlerRetryAdvice的消息,以获取需要重试逻辑的某种服务方法。

这就是如何回答你的特定问题。

另一方面,Spring Retry框架不是为XML配置而设计的,因为它对于常规<bean>定义来说足够简单。您应该通过标准的Spring AOP Framework配置RetryOperationsInterceptor(及其依赖项)。

从那里你不需要引入Spring Integration层只是为了简单地重试一个服务。