我目前正在使用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() {
....
}
我不知道如何配置流程以使用我配置的事务管理器。
答案 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")