java - 在 spring Integration dsl 中配置 spring 事务

标签 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() {
    ....
}

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

最佳答案

实际上,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/

相关文章:

java - NoClassDefFound错误: com/badlogic/gdx/LifecycleListener

java - 无法打开类路径资源 [java/lang/Object.class],因为它不存在

java - 使用 spring 框架在 apache camel 中回滚消息

java - 在 Spring Integration 中使用拦截器发送日志消息

sockets - 将 tcp 套接字连接到 spring 集成的简单示例

java - jackson JSON 库 : how to instantiate a class that contains abstract fields

java - 如何使用 Netbeans 将选项传递给 jar 文件

java - 在方程中实现指数

java - 企业级应用程序中的事务

java - 自定义注释不适用于 spring Beans