我目前正在使用 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() {
....
}
我不知道如何配置流程以使用我已配置的事务管理器。
最佳答案
实际上,Spring Integration Java DSL 支持所有可用于 XML components 的事务功能。 .
请提供您想要开始交易的更多信息。请记住,TX 支持仅限于线程边界。因此,您可以从 poller
开始 TX或来自 JMS(AMQP) 消息驱动 channel 适配器。
或者使用TransactionInterceptor
作为流程中任何端点的建议。但在这种情况下,TX 仅限制为 AbstractReplyProducingMessageHandler.handleRequestMessage
.
更新
为流程的某些部分启动 TX 并不是那么标准的任务,它可以通过 unit of work
来实现一些交易黑匣子。为此,我们有一个类似 Gateway
的组件。因此,您指定一些接口(interface),将其标记为 @MessagingGateway
,添加@IntegrationComponentScan
与@EnableConfiguration
一起并用 @Transactional
标记该接口(interface)的方法。 requestChannel
该网关的应该通过 JDBC 和 Jackson 转换将消息发送到某个单独的流,并等待结果在主流中继续。 TX 将在该网关的方法调用返回时完成。
并像平常一样调用该网关 service-activator
来自.handle("myGateway", "getData")
关于java - 在 spring Integration dsl 中配置 spring 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29103706/