gpt4 book ai didi

java - ActiveMQ:如何正确设置数据库锁事务隔离类型?

转载 作者:行者123 更新时间:2023-12-01 04:19:22 24 4
gpt4 key购买 nike

在我的 ActiveMQ 配置中,我想将默认数据库锁事务隔离级别更改为 TRANSACTION_REPEATABLE_READ

API documentation写道:

public void setTransactionIsolation(int transactionIsolation)

set the Transaction isolation level to something other that TRANSACTION_READ_UNCOMMITTED This allowable dirty isolation level may not be achievable in clustered DB environments so a more restrictive and expensive option may be needed like TRANSACTION_REPEATABLE_READ see isolation level constants in Connection

在 XML 配置中,jdbcPersistenceAdaptertransactionIsolation 属性仅接受整数类型值,因此我无法使用 Connection.TRANSACTION_REPEATABLE_READ直接常数,但只有 value (4)相反:

<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds" transactionIsolation="4" lockKeepAlivePeriod="5000">
<locker>
<lease-database-locker lockAcquireSleepInterval="10000"/>
</locker>
</jdbcPersistenceAdapter>
</persistenceAdapter>

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

由于 ActiveMQ 是基于 Spring 的,我想我可以尝试通过使用 <util:constant> 以某种方式分配它,但找不到怎么做...

最佳答案

尝试这样:

<util:constant id="transactionType" static-field="java.sql.Connection.TRANSACTION_REPEATABLE_READ" />

编辑:

问题不在 spring 中,而是在 activemq XML Schema 中:

<xs:attribute name="transactionIsolation" type="xs:integer">

因此它不会接受除硬编码 int 之外的任何其他值 - 您可以尝试在此处放置属性占位符:

 transactionIsolation="#{myproperty}"

但我不确定这是否有效。

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

关于java - ActiveMQ:如何正确设置数据库锁事务隔离类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19111038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com