Hmily-Config

编辑
更新时间: 2023-01-14

配置详解:

  • 文件名为 : hmily.yml

  • 路径: 默认路径为项目的 resource目录下,也可以使用 -Dhmily.conf 指定,也可以把配置放在 user.dir 目录下。 优先级别 -Dhmily.conf > user.dir > resource

hmily:
  server:
    configMode: local
    appName: xiaoyu
  #  如果server.configMode eq local 的时候才会读取到这里的配置信息.
  config:
    appName: xiaoyu
    serializer: kryo
    contextTransmittalMode: threadLocal
    scheduledThreadMax: 16
    scheduledRecoveryDelay: 60
    scheduledCleanDelay: 60
    scheduledPhyDeletedDelay: 600
    scheduledInitDelay: 30
    recoverDelayTime: 60
    cleanDelayTime: 180
    limit: 200
    retryMax: 10
    bufferSize: 8192
    consumerThreads: 16
    asyncRepository: true
    autoSql: true
    phyDeleted: true
    storeDays: 3
    repository: mysql

repository:
  database:
    driverClassName: com.mysql.jdbc.Driver
    url :
    username:
    password:
    maxActive: 20
    minIdle: 10
    connectionTimeout: 30000
    idleTimeout: 600000
    maxLifetime: 1800000
  file:
    path:
    prefix: /hmily
  mongo:
    databaseName:
    url:
    userName:
    password:
  zookeeper:
    host: localhost:2181
    sessionTimeOut: 1000
    rootPath: /hmily
  redis:
    cluster: false
    sentinel: false
    clusterUrl:
    sentinelUrl:
    masterName:
    hostName:
    port:
    password:
    maxTotal: 8
    maxIdle: 8
    minIdle: 2
    maxWaitMillis: -1
    minEvictableIdleTimeMillis: 1800000
    softMinEvictableIdleTimeMillis: 1800000
    numTestsPerEvictionRun: 3
    testOnCreate: false
    testOnBorrow: false
    testOnReturn: false
    testWhileIdle: false
    timeBetweenEvictionRunsMillis: -1
    blockWhenExhausted: true
    timeOut: 1000

metrics:
  metricsName: prometheus
  host:
  port: 9091
  async: true
  threadCount : 16
  jmxConfig:

hmily.server配置

名称类型默认值是否必填说明
configModeStringlocal必填配置模式,现在支持local,zookeeper,nacos,apollo,配置为local,则会读取yml文件里的配置,其他模式,则会读取配置中心的
appNameString必填应用的名称,如果hmilyConfig中也配置了appName则会覆盖此配置

hmily.config配置

  • 这是整个框架的核心配置
名称类型默认值是否必填说明
appNameString必填一般填你微服务的应用名称,请不要重复
serializerStringkryo非必填这是指定事务日志的序列化方式,目前支持填写 kryo, hessian, jdk, protostuff
contextTransmittalModeStringthreadLocal非必填这是事务上下文传递的模式,目前支持填写 threadLocal, transmittable (跨线程模式)
scheduledThreadMaxintCPU * 2非必填调度线程数最大线程数量
scheduledRecoveryDelayint(单位:秒)60非必填事务日志自动恢复调度周期
scheduledCleanDelayint(单位:秒)60非必填事务日志清理调度周期
scheduledPhyDeletedDelayint(单位:秒)60非必填事务日志物理删除调度周期
scheduledInitDelayint(单位:秒)30非必填调度任务启动延迟时间
recoverDelayTimeint(单位:秒)60非必填事务日志恢复迟延时间
cleanDelayTimeint(单位:秒)60非必填事务日志清理迟延时间
limitint100非必填获取事务日志行数大小
retryMaxint10非必填最大重试次数
bufferSizeint4096 * 2 * 2非必填disruptor的bufferSize大小
consumerThreadsintCPU * 2非必填disruptor消费者线程数量
asyncRepositorybooleantrue非必填是否异步存储事务日志,设置为false则为同步
autoSqlbooleantrue非必填是否自动执行框架自动建库建表SQL语句(如果已经创建可以设置为false)
phyDeletedbooleantrue非必填在运行过程中,是否物理删除日志。设置为false,则只会更改日志状态
storeDaysint(单位:天)3非必填如果 phyDeleted 设置为false的时候,日志存储天数
repositoryStringmysql必填这是指定事务日志的存储方式,目前支持填写 mysql, oracle, postgresql, sqlserver, mongo, redis, file

repository配置

repository是Hmily用来存储事务日志的配置,目前支持:database(mysql, oracle, postgresql, sqlserver), file(本地模式,测试,开发环境用), mongodb, zookeeper, redis。

  • database配置(默认使用hikari连接池):
名称类型默认值是否必填说明
driverClassNameStringcom.mysql.jdbc.Driver必填数据库的驱动类名称
urlString必填数据库的url连接
usernameString必填数据库的用户名密码
passwordString必填数据库的密码
maxActiveint20非必填连接池连接最大活跃数
minIdleint10非必填连接池最小空闲数
connectionTimeoutlong30000非必填数据库的连接超时时间
idleTimeoutlong60000非必填一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
maxLifetimelong1800000非必填一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like ‘%timeout%’;
idleTimeoutlong60000非必填一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
dataSourcePropertyMapMap非必填hikari连接池的其他属性配置
  • mongo配置:
名称类型默认值是否必填说明
databaseNameString必填mongo数据库名称
urlString必填mongo数据库的url连接
userNameString必填mongo数据库的用户名密码
passwordString必填mongo数据库的密码
  • file配置:
名称类型默认值是否必填说明
pathString非必填文件存储路径
prefixString非必填文件存储前缀
  • zookeeper配置:
名称类型默认值是否必填说明
hostStringlocalhost:2181必填zk服务ip与端口
sessionTimeOutint(ms)1000非必填session超时时间
rootPathString/hmily必填存储根路径
  • redis配置:
名称类型默认值是否必填说明
clusterbooleanfalse非必填是否是集群
sentinelbooleanfalse非必填是否是哨兵模式
clusterUrlString非必填集群url,多个节点使用 ; 分隔
sentinelUrlString非必填哨兵url,多个节点使用 ; 分隔
masterNameString非必填主节点名称,没有设置可以不填
hostNameString非必填redis单机模式下的host
portint非必填redis单机模式下的端口
passwordString非必填redis服务密码
maxTotalint8非必填最大连接数
maxIdleint8非必填最大空闲的连接数
minIdleint0非必填最少空闲的连接数
maxWaitMillisint-1非必填当资源池连接用尽后,调用者的最大等待时间(单位为毫秒)-1:表示永不超时 不建议使用默认值
minEvictableIdleTimeMillisint1800000非必填资源池中资源最小空闲时间(单位为毫秒),达到此值后空闲资源将被移除, 默认值1000*60 *30 = 30分钟
softMinEvictableIdleTimeMillisint1800000非必填对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 (默认逐出策略)
numTestsPerEvictionRunint3非必填每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
timeBetweenEvictionRunsMillisint-1非必填逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
timeOutint1000非必填超时时间
testOnCreatebooleanfalse非必填在获取连接时,是否验证有效性
testOnBorrowbooleanfalse非必填在borrow一个jedis实例时,是否提前进行alidate操作;如果为true,则得到的jedis实例均是可用的
testOnReturnbooleanfalse非必填在return给pool时,是否提前进行validate操作
testWhileIdlebooleanfalse非必填如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义
blockWhenExhaustedbooleantrue非必填连接耗尽时是否阻塞, false报异常,true阻塞直到超时, 默认true

metrics配置

metrics是指在hmily框架运行中,会记录调用量,耗时,事务提交与失败等等信息,目前只支持 prometheus.

名称类型默认值是否必填说明
metricsNameStringprometheus必填支持的类型,目前只支持prometheus
hostStringlocalhost非必填暴露的http服务的host,不填则会取localhost
portint9091必填暴露的http服务的端口
asyncbooleantrue非必填是否异步模式记录
threadCountint2 * cpu非必填异步模式下线程数大小
jmxConfigString非必填jmxConfig配置,是一个json格式,具体可以参考prometheus官网