繁体   English   中英

Spring Integration DSL 添加中流事务

[英]Spring Integration DSL adding mid flow transaction

我想将流程的特定部分设为事务性。 例如,我想在一个事务块中进行前两个转换操作。 这是我使用的流程代码:

@Bean
public IntegrationFlow createNumberRange() {

    return IntegrationFlows.from("npEventPubSubChannel")

            .transform(...) 
            .transform(...)// should be transactional with above transform together
            .transform(...) // non transactional
            .handle((payload, headers) -> numbRepository.saveAll(payload))
            .get();

}

我找到了一种解决方法,即添加另一个句柄并将流定向到这样的事务网关:

.handle("transactionalBean", "transactionalMetod") //Then implemented messagingGateway which consists of transactional method.

我还找到了中流事务支持,但找不到可以处理的示例。

是否有一个优雅的解决方案,而不是在流程中间指向另一个网关?

如果您想将两个转换器包装到事务中,除非将该调用隐藏在事务网关之后,否则您别无选择。 当您执行原始 Java 时,这完全相似:

@Transactional
void myTransactionalMethod() {
    transform1();
    transform2();
}

我相信你同意我的看法,我们总是必须这样做才能让他们在同一笔交易中。

使用 Spring Integration Java DSL,您可以做到这一点:

.gateway(f -> f
            .transform(...)
            .transform(...),
        e -> e.transactional())

您是否同意它与我们在原始 Java 中所拥有的相似,并且从优雅的角度来看并没有那么糟糕?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM