transport {
# tcp, unix-domain-socket
# 这里指定了Seata使用的传输类型为TCP。
type = "TCP"
#NIO, NATIVE
#服务器使用NIO(非阻塞IO)模式。另一种可选的模式是NATIVE
server = "NIO"
#enable heartbeat
#启用心跳机制,用于检测连接的健康状态。
heartbeat = true
# the tm client batch send request enable
#事务管理器(TM)客户端是否启用批量发送请求。这里设置为false,表示不启用。
enableTmClientBatchSendRequest = false
# the rm client batch send request enable
#资源管理器(RM)客户端是否启用批量发送请求。这里设置为true,表示启用。
enableRmClientBatchSendRequest = true
# the rm client rpc request timeout
#rpcRmRequestTimeout = 2000
# the tm client rpc request timeout
事务管理器(TM)的RPC请求超时时间,这里设置为30秒。
rpcTmRequestTimeout = 30000
# the rm client rpc request timeout
#资源管理器(RM)的RPC请求超时时间,这里设置为15秒。
rpcRmRequestTimeout = 15000
#thread factory for netty
threadFactory {
#Netty Boss线程的前缀名。
bossThreadPrefix = "NettyBoss"
#Netty Worker线程的前缀名。
workerThreadPrefix = "NettyServerNIOWorker"
#服务器执行线程的前缀名。
serverExecutorThread-prefix = "NettyServerBizHandler"
#是否共享Boss和Worker线程,这里设置为false,表示不共享。
shareBossWorker = false
#客户端选择器线程的前缀名。
clientSelectorThreadPrefix = "NettyClientSelector"
#客户端选择器线程的数量,这里设置为1。
clientSelectorThreadSize = 1
#客户端工作线程的前缀名。
clientWorkerThreadPrefix = "NettyClientWorkerThread"
#Netty Boss线程的数量,这里设置为1。
# netty boss thread size
bossThreadSize = 1
#auto default pin or 8
#Netty Worker线程的数量,这里设置为"default",意味着使用Netty的默认设置。
workerThreadSize = "default"
}
shutdown {
# when destroy server, wait seconds
#在关闭服务器时,等待的时间设置为3秒。
wait = 3
}
#使用的序列化方式为"seata"。
serialization = "seata"
#使用的压缩方式为"none",表示不进行压缩。
compressor = "none"
}
service {
#transaction service group mapping
#这一行定义了一个事务服务组(transaction service group)的映射。my_test_tx_group是一个自定义的事务组名称,它映射到default组。Seata支持将不同的业务或系统映射到不同的事务组中,以实现更细粒度的控制和管理。在这个例子中,my_test_tx_group的所有事务请求都会被路由到default组进行处理。
vgroupMapping.my_test_tx_group = "default"
#only support when registry.type=file, please dont set multiple addresses
#这一行配置了default组的服务地址列表。这里只提供了一个地址127.0.0.1:8091,表示Seata服务运行在本地的8091端口上。当客户端发送请求到default组时,它会尝试连接到这个地址。注意,通常在生产环境中,你会配置多个服务地址以实现高可用性和负载均衡。
default.grouplist = "127.0.0.1:8091"
#degrade, current not support
#这一行设置降级功能的启用状态为false。降级通常用于在服务不可用时提供简化的功能或回退策略,但当前Seata可能还不支持这一功能,因此它被设置为禁用状态。
enableDegrade = false
#disable seata
#这一行设置全局事务的禁用状态为false。全局事务是Seata的核心功能之一,用于保证分布式系统中的事务一致性。将此值设置为false意味着启用全局事务功能。如果设置为true,则Seata将不会处理全局事务,这通常用于在调试或特定场景下禁用分布式事务。
disableGlobalTransaction = false
}
#这段配置是Seata中关于客户端的配置,包含了资源管理器(RM)、事务管理器(TM)、撤销日志(Undo Log)、负载均衡(Load Balance)和特定于TCC(Try-Confirm-Cancel)模式的配置。
client {
rm {
#异步提交缓冲区的限制大小,设置为10000。
asyncCommitBufferLimit = 10000
lock {
#锁重试间隔,设置为10毫秒。
retryInterval = 10
#锁重试次数,设置为30次。
retryTimes = 30
#当冲突时,分支事务回滚的重试策略,设置为启用。
retryPolicyBranchRollbackOnConflict = true
}
#报告重试次数,设置为5次。
reportRetryCount = 5
#是否启用表元数据检查,设置为禁用。
tableMetaCheckEnable = false
#表元数据检查间隔,设置为60000毫秒(即1分钟)。
tableMetaCheckerInterval = 60000
#是否启用成功报告,设置为禁用。
reportSuccessEnable = false
#Saga分支注册是否启用,设置为禁用。
sagaBranchRegisterEnable = false
#Saga JSON解析器类型,设置为"fastjson"。
sagaJsonParser = "fastjson"
#Saga重试和补偿持久化模式更新,均设置为禁用。
sagaRetryPersistModeUpdate = false
#TCC动作拦截器顺序,设置为一个特定的优先级值。
sagaCompensatePersistModeUpdate = false
tccActionInterceptorOrder = -2147482648 #Ordered.HIGHEST_PRECEDENCE + 1000
SQL解析器类型,设置为"druid"。
sqlParserType = "druid"
#XA分支执行超时和连接两阶段保持超时,分别设置为60000毫秒(即1分钟)和10000毫秒(即10秒)。
branchExecutionTimeoutXA = 60000
connectionTwoPhaseHoldTimeoutXA = 10000
}
tm {
#提交和回滚重试次数,均设置为5次。
commitRetryCount = 5
rollbackRetryCount = 5
#默认全局事务超时时间,设置为60000毫秒(即1分钟)。
defaultGlobalTransactionTimeout = 60000
#降级检查相关的配置,包括是否启用降级检查、检查周期和允许的检查次数。
degradeCheck = false
degradeCheckPeriod = 2000
degradeCheckAllowTimes = 10
#拦截器顺序,设置为一个特定的优先级值。
interceptorOrder = -2147482648 #Ordered.HIGHEST_PRECEDENCE + 1000
}
undo {
#数据校验是否启用,设置为启用。
dataValidation = true
#是否只关心更新的列,设置为启用。
onlyCareUpdateColumns = true
#日志序列化类型,设置为"jackson"。
logSerialization = "jackson"
#撤销日志表名,设置为"undo_log"。
logTable = "undo_log"
compress {
#压缩相关的配置,包括是否启用压缩、压缩类型以及压缩阈值。
enable = true
# allow zip, gzip, deflater, lz4, bzip2, zstd default is zip
type = zip
# if rollback info size > threshold, then will be compress
# allow k m g t
threshold = 64k
}
}
loadBalance {
#负载均衡类型,设置为"XID"。
type = "XID"
#虚拟节点数,设置为10。
virtualNodes = 10
}
}
log {
#异常率,设置为100。
exceptionRate = 100
}
tcc {
fence {
# tcc fence log table name
#TCC fence日志表名,设置为"tcc_fence_log"。
logTableName = tcc_fence_log
#TCC fence日志清理周期,设置为1小时。
# tcc fence log clean period
cleanPeriod = 1h
}
}
如上是registry.conf中的config的type为file配置的时候的文件形式配置,如果你要是指定registry.conf中的config的type为nacos,那么可以转为为如下类似的配置,配到nacos中。
# Seata配置文件
# transport 配置
transport.type = TCP
transport.server = NIO
transport.heartbeat = true
transport.enableClientBatchSendRequest = true
transport.threadFactory.bossThreadPrefix = NettyBoss
transport.threadFactory.workerThreadPrefix = NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix = NettyServerBizHandler
transport.threadFactory.shareBossWorker = false
transport.serialization = seata
transport.compressor = none
# service 配置
service.vgroupMapping.my_test_tx_group = "default"
service.default.grouplist = "127.0.0.1:8088"
service.enableDegrade = false
service.disableGlobalTransaction = false
# client 配置
client.rm.asyncCommitBufferLimit = 10000
client.rm.lock.retryInterval = 10
client.rm.lock.retryTimes = 30
client.rm.lock.retryPolicyBranchRollbackOnConflict = true
client.rm.reportRetryCount = 5
client.rm.tableMetaCheckEnable = false
client.rm.tableMetaCheckerInterval = 60000
client.rm.reportSuccessEnable = false
client.rm.sagaBranchRegisterEnable = false
client.rm.sagaJsonParser = "fastjson"
client.rm.tccActionInterceptorOrder = -2147482648
client.rm.sqlParserType = "druid"
client.tm.commitRetryCount = 5
client.tm.rollbackRetryCount = 5
client.tm.defaultGlobalTransactionTimeout = 60000
client.tm.degradeCheck = false
client.tm.degradeCheckPeriod = 2000
client.tm.degradeCheckAllowTimes = 10
client.tm.interceptorOrder = -2147482648
client.undo.dataValidation = true
client.undo.onlyCareUpdateColumns = true
client.undo.logSerialization = "jackson"
client.undo.logTable = "undo_log"
client.undo.compress.enable = true
client.undo.compress.type = "zip"
client.undo.compress.threshold = 64k
client.loadBalance.type = "random"
client.loadBalance.virtualNodes = 10
log.exceptionRate = 100
# tcc 配置
tcc.fence.logTableName = tcc_fence_log
tcc.fence.cleanPeriod = 1h