在spring integration dsl中配置spring事务

时间:2015-03-17 15:51:14

标签: java spring spring-integration

我目前正在使用spring-integration-dsl配置spring集成,如下所示

@Bean
public IntegrationFlow flow() {
    return IntegrationFlows.from(inboundServer())
            .transform(Transformers.objectToString())
            .transform(...)
            .route(...)
            .transform(Transformers.toJson())
            .channel(...)
            .get();
}

@Bean
public PlatformTransactionManager transactionManager() {
    ....
}

我不知道如何配置流程以使用我配置的事务管理器。

1 个答案:

答案 0 :(得分:2)

实际上,Spring Integration Java DSL支持所有可用于XML components的事务功能。

请提供您想要开始交易的更多信息。请记住,TX支持仅限于Thread边界。因此,您可以从poller或JMS(AMQP)消息驱动通道适配器启动TX。

或者使用TransactionInterceptor作为流程中任何端点的建议。但在这种情况下,TX仅限于AbstractReplyProducingMessageHandler.handleRequestMessage

<强>更新

启动流程的某些部分的TX不是标准任务,它可以作为unit of work某个事务黑盒子来实现。为此,我们有一个像Gateway这样的组件。因此,您指定一些界面,使用@MessagingGateway标记,在@IntegrationComponentScan旁边添加@EnableConfiguration,并使用@Transactional标记该界面的方法。此网关的requestChannel应该使用JDBC和Jackson转换向某个单独的流发送消息,并等待结果在主流中继续。 TX将在该网关的方法调用返回时完成。

并从service-activator

中将该网关称为常规.handle("myGateway", "getData")