2016-03-08 39 views
1

我有一个Spring组件类中的一个非常简单的方法如何将Java Spring Flow转换为Spring Integration Work Flow并重试?

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

我想申请重新尝试这个方法,但我不能使用弹簧重试1.1.12因为我的核心Spring版本是3.0及以下版本spring-retry不允许XML配置。我们在此应用程序中成功使用Spring Integration进行重试,因此我正在考虑将此方法转换为SI工作流程。做这种转换的最佳方式是什么?

回答

1

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

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

因此,您需要的是一个<gateway>,它将消息发送到<service-activator>RequestHandlerRetryAdvice用于需要重试逻辑的某种服务方法。

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

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

从那里你不需要介绍Spring集成层,只是为了简单的重试一个服务。