首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Camel 3.7.3和transaced()隔离

问Apache Camel 3.7.3和transaced()隔离
EN

Stack Overflow用户
提问于 2021-05-03 17:44:45
回答 2查看 64关注 0票数 0

假设我有一条路线

代码语言:javascript
复制
import org.apache.camel.builder.RouteBuilder;

class MyRouteBuilder extends RouteBuilder {
    public void configure() {
        from("file:src/data?noop=true")
                .transacted()
                .bean("accountService","credit")
                .bean("accountService","debit");
    }
}

正如您所看到的,我正在使用transacted(),我知道如何选择事务传播策略,即REQUIRED_NEW、PROPAGATION_MANDATORY等。

但是,我不知道如何更改transacted()隔离级别,即如何将其设置为隔离级别SERIALIZABLE

备注:

我正在使用

代码语言:javascript
复制
JAVA 11
SpringBoot 2.4.5
Apache Camel 3.7.3
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-03 21:12:07

如果您想尝试自定义隔离级别,我认为您必须创建一个SpringTransactionPolicy并提供一个TransactionTemplate实例:请参阅here

执行此操作后,您将能够specify所需的隔离级别:

代码语言:javascript
复制
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);
transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
SpringTransactionPolicy customPolicy = new SpringTransactionPolicy(transactionTemplate);

from("...")
    .policy(customPolicy)
票数 0
EN

Stack Overflow用户

发布于 2021-05-03 18:22:23

被事务处理的方法可以引用保存所希望的事务策略的特定bean:

代码语言:javascript
复制
.transacted("PROPAGATION_REQUIRED")

或者,在SpringRouteBuilder的情况下,您可以使用Policy对象:

代码语言:javascript
复制
public void configure() {
        
    Policy myPolicy = bean(SpringTransactionPolicy.class, "PROPAGATION_REQUIRES_NEW"));
    ...

    from("...")
        .policy(myPolicy)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67366739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档