bitronix事务管理器及相关的参数配置

Source

bitronix事务管理器及相关的参数配置

配置方式

bitronix事务管理器(BTM)的配置信息存储在一个配置对象内,可以通过TransactionManagerServices.getConfiguration()去获取。如果想要修改默认的配置信息的话,可以通过以下两种方式去调整。

定义配置文件

BTM可以通过定义一个参数配置文件去调整参数设置。
默认会读取项目classpath根目录下的bitronix-default-config.properties
也可以在项目中自定义配置文件的路径和文件名。通常会在虚拟机的命令行内增加一个-D的参数。
java -Dbitronix.tm.configuration=./my-btm-config.properties MyClass
后面这块配置不是很了解,后续再查看下
(可以配置在tomcat/bin中catalina.sh文件中)
在这里插入图片描述

配置文件内默认的格式为key=value,如bitronix.tm.2pc.async=true,然后通过${bitronix.tm.2pc.async}去获取。

修改配置对象属性

通过TransactionManagerServices.getConfiguration()获取对应的配置对象实例后,可以调用对应的Setter方法对相关参数值进行调整设置。如下:

    Configuration conf = TransactionManagerServices.getConfiguration();
    conf.setServerId("jvm-1");
    conf.setLogPart1Filename("./tx-logs/part1.btm");
    conf.setLogPart2Filename("./tx-logs/part2.btm");

配置参数说明

根据配置参数功能的不同,将参数大致划分为以下几个大类。

事务引擎设置

这些配置参数关系着事务管理的核心。

bitronix.tm.serverId

一个必须唯一标识此事务管理实例,稳定的ASCII字符串。不能超过51个字符,否则会被截断。
默认值为机器的IP地址,但对于生产环境来说不安全。

public Configuration setServerId(String serverId)
bitronix.tm.2pc.async

两阶段提交是否异步处理。异步处理能提高处理效率,但加大性能消耗和debug难度。
默认值false

public Configuration setAsynchronous2Pc(boolean asynchronous2Pc)

两阶段提交协议是分布式系统的原子承诺协议。该协议的名称意味着由两个阶段组成。第一个是提交请求阶段,其中事务管理器协调所有事务资源以便能提交或中止。在第二个阶段,也就是提交阶段,事务管理器决定根据每个事务资源的投票通过提交或中止来终止操作。

bitronix.tm.2pc.warnAboutZeroResourceTransactions

如果事务执行时没有单独的队列中资源,是否警告。
一般这种情况容易产生错误。
默认值true

public Configuration setWarnAboutZeroResourceTransaction(boolean warnAboutZeroResourceTransaction)
bitronix.tm.2pc.debugZeroResourceTransactions

堆栈中没有单独的队列中资源的事务在创建或提交时,是否记录跟踪。一般与参数warnAboutZeroResourceTransactions配合使用,用于帮助排查错误代码。
默认值false

public Configuration setDebugZeroResourceTransaction(boolean debugZeroResourceTransaction)
bitronix.tm.disableJmx

如果可用,事务管理器默认注册JMX中注册的对象。设置为true时,不注册JMX对象。
默认值false

public Configuration setDisableJmx(boolean disableJmx)

JMX的全称为Java Management Extensions. 顾名思义,是管理Java的一种扩展。这种机制可以方便的管理正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。

bitronix.tm.jndi.userTransactionName

将事务管理器绑定到内部JNDI提供程序的名称。
默认值java:comp/UserTransaction
(这块不是很理解,后期补充)

public Configuration setJndiUserTransactionName(String jndiUserTransactionName)
bitronix.tm.allowMultipleLrc

事务管理器是否允许多个LRC资源参与同一个事务。如果允许,则会放弃恢复保证。但有时候在开发模式中有帮助。
默认值false
(需要去了解下LRC)

public Configuration setAllowMultipleLrc(boolean allowMultipleLrc) 
bitronix.tm.currentNodeOnlyRecovery

设置为true,则当在同一JMS和JDBC资源上运行多个事务管理器实例时,避免恢复流程尝试从非本节点开始恢复事务。
默认值true

public Configuration setCurrentNodeOnlyRecovery(boolean currentNodeOnlyRecovery)

日志设置

这些可配置的属性与用于记录恢复信息的磁盘日志有关。

bitronix.tm.journal

用于设置记录事务日志,可以是磁盘、空日志或者类名。
如果是磁盘日志的话,会记录到两个固定大小的文件和磁盘驱动中。
空日志只允许一个禁用日志记录。在运行测试时有帮助。
默认值disk

public Configuration setJournal(String journal)
bitronix.tm.journal.disk.logPart1Filename

日志片段文件1
默认值btm1.tlog

public Configuration setLogPart1Filename(String logPart1Filename)

(文件名包括路径)

bitronix.tm.journal.disk.logPart2Filename

日志片段文件2
默认值btm2.tlog

public Configuration setLogPart2Filename(String logPart2Filename)

(文件名包括路径)

bitronix.tm.journal.disk.forcedWriteEnabled

是否强制记录磁盘日志。
(生产中不要设置成false,否则数据原子性无法保证。)
默认值true

public Configuration setForcedWriteEnabled(boolean forcedWriteEnabled)
bitronix.tm.journal.disk.maxLogSize

日志片段记录的最大大小,以MB为单位。数值越大时,允许事务保持的时间越长。但当一个片段存满时,TM的暂停时间越长。
默认值2

public Configuration setMaxLogSizeInMb(int maxLogSizeInMb)
bitronix.tm.journal.disk.filterLogStatus

是否只记录强制记录的日志。
如果设置为true时,会降低日志片段的使用率,但是提高debug难度。
默认值false

public Configuration setFilterLogStatus(boolean filterLogStatus)
bitronix.tm.journal.disk.skipCorruptedLogs

是否应该跳过损坏的事务日志条目。
只有在最后的手段,当你必须恢复一对损坏的文件。
默认值false

public Configuration setSkipCorruptedLogs(boolean skipCorruptedLogs)
bitronix.tm.conservativeJournaling

事务日志是否为单线程的保守日志。
设置为true时可能会对性能产生很大影响。
默认值false
在BTM2.X版本总不存在该配置。

定时器设置

配置事务管理器依赖的超时时间。

bitronix.tm.timer.defaultTransactionTimeout

默认的事务超时时间,以秒为单位。
默认值60

public Configuration setDefaultTransactionTimeout(int defaultTransactionTimeout)
bitronix.tm.timer.gracefulShutdownInterval

事务管理器在中止事务前等待事务完成的最大时长。单位为秒。
默认值60

public Configuration setGracefulShutdownInterval(int gracefulShutdownInterval)
bitronix.tm.timer.backgroundRecoveryIntervalSeconds

后台运行恢复进程的时间间隔,单位为秒。
默认值60

public Configuration setBackgroundRecoveryIntervalSeconds(int backgroundRecoveryIntervalSeconds)

资源加载器设置

Resource loader configuration
资源加载器使用存储在属性文件中的配置来加载和配置分布式事务(XA)资源。

bitronix.tm.resource.configuration

资源加载器配置文件名。
默认值为空。

public Configuration setResourceConfigurationFilename(String resourceConfigurationFilename)

(文件名包括路径)
在这里插入图片描述

连接池设置

JDBC和JMC连接池配置。