在 spring 集成 dsl 中配置 spring 事务
Configuring spring transactions in spring integration dsl
我目前正在使用 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 集成 Java DSL 支持所有事务功能,这些功能可用于 XML components.
请提供您希望从何处开始交易的更多信息。请记住,TX 支持仅限于线程边界。因此,您可以从 poller
或从 JMS(AMQP) 消息驱动通道适配器启动 TX。
或使用 TransactionInterceptor
作为流程中任何端点的建议。但在这种情况下,TX 仅限于 AbstractReplyProducingMessageHandler.handleRequestMessage
.
更新
为流程的某些部分启动 TX 不是标准任务,它可以作为 unit of work
一些交易黑盒来实现。为此,我们有一个像 Gateway
这样的组件。因此,您指定了一些接口,用 @MessagingGateway
标记它,在 @EnableConfiguration
旁边添加 @IntegrationComponentScan
并用 @Transactional
标记该接口的方法。此网关的 requestChannel
应使用 JDBC 和 Jackson 转换将消息发送到某个单独的流,并等待结果在主流中继续。 TX 将在 return 从该网关的方法调用中完成。
并从 .handle("myGateway", "getData")
中正常调用该网关 service-activator
我目前正在使用 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 集成 Java DSL 支持所有事务功能,这些功能可用于 XML components.
请提供您希望从何处开始交易的更多信息。请记住,TX 支持仅限于线程边界。因此,您可以从 poller
或从 JMS(AMQP) 消息驱动通道适配器启动 TX。
或使用 TransactionInterceptor
作为流程中任何端点的建议。但在这种情况下,TX 仅限于 AbstractReplyProducingMessageHandler.handleRequestMessage
.
更新
为流程的某些部分启动 TX 不是标准任务,它可以作为 unit of work
一些交易黑盒来实现。为此,我们有一个像 Gateway
这样的组件。因此,您指定了一些接口,用 @MessagingGateway
标记它,在 @EnableConfiguration
旁边添加 @IntegrationComponentScan
并用 @Transactional
标记该接口的方法。此网关的 requestChannel
应使用 JDBC 和 Jackson 转换将消息发送到某个单独的流,并等待结果在主流中继续。 TX 将在 return 从该网关的方法调用中完成。
并从 .handle("myGateway", "getData")
service-activator