首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveMQ:如何正确设置DB锁事务隔离类型?

ActiveMQ:如何正确设置DB锁事务隔离类型?
EN

Stack Overflow用户
提问于 2013-10-01 08:06:31
回答 1查看 570关注 0票数 1

在我的ActiveMQ配置中,我希望将默认的DB锁事务隔离级别更改为TRANSACTION_REPEATABLE_READ

API文档写道:

public void setTransactionIsolation(int transactionIsolation) 将事务隔离级别设置为TRANSACTION_READ_UNCOMMITTED允许的脏隔离级别在集群DB环境中可能无法实现,因此可能需要一个更严格和更昂贵的选项,例如TRANSACTION_REPEATABLE_READ,请参阅Connection中的隔离级别常量。

在XML配置中,jdbcPersistenceAdaptertransactionIsolation属性只接受整数类型的值,因此不能直接使用Connection.TRANSACTION_REPEATABLE_READ常量,而只能使用价值(4)

代码语言:javascript
复制
<persistenceAdapter>
    <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds" transactionIsolation="4" lockKeepAlivePeriod="5000">
        <locker>
            <lease-database-locker lockAcquireSleepInterval="10000"/>
        </locker>
    </jdbcPersistenceAdapter>
</persistenceAdapter>

有没有办法,我可以指定常量,而不是硬编码数字"4"?

由于ActiveMQ是基于Spring的,我想我可以尝试通过使用来分配它,但是却找不到如何去做.

EN

回答 1

Stack Overflow用户

发布于 2013-10-01 08:35:51

试着那样:

代码语言:javascript
复制
<util:constant id="transactionType" static-field="java.sql.Connection.TRANSACTION_REPEATABLE_READ" />

编辑:

问题不在春季,而是在中:

代码语言:javascript
复制
<xs:attribute name="transactionIsolation" type="xs:integer">

因此,除了硬编码int之外,它不接受任何其他值--您可以在这里尝试put属性占位符:

代码语言:javascript
复制
 transactionIsolation="#{myproperty}"

但我不确定这是否有效。

解决这个问题的方法是通过纯spring (bean id=...)配置activemq,而不使用专用的amq标记。EDIT2:这里有带有纯spring标记的示例配置,http://activemq.apache.org/jms-and-jdbc-operations-in-one-transaction.html

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

https://stackoverflow.com/questions/19111038

复制
相关文章

相似问题

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