server.port: 8080 server: contextPath: /imutil solon.app: name: 'tencent-im-util' group: 'imutil' # 日志 solon.logging.logger: "root": level: INFO solon.logging.appender: console: charset: GBK pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(${PID:-}) --- %-15([%15.15thread]) %-56(%cyan(%-40.40logger{39}%L)) : %msg%n" file: charset: UTF-8 pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- %-15([%15.15thread]) %-56(%-40.40logger{39}%L)) : %msg%n" #=====================================数据库配置(PostgreSQL) solon.dataSources: db1!: class: "com.zaxxer.hikari.HikariDataSource" jdbcUrl: jdbc:postgresql://192.168.10.118:5432/tencen_im?currentSchema=public&reWriteBatchedInserts=true driverClassName: org.postgresql.Driver username: postgres password: Aa135790!123 maximumPoolSize: 20 minimumIdle: 5 # MyBatis-Plus 配置 mybatis.db1: typeAliases: - "com.imutil.entity" mappers: - "com.imutil.mapper" configuration: logImpl: org.apache.ibatis.logging.nologging.NoLoggingImpl globalConfig: banner: false # Sa-Token 配置 sa-token: authFlag: true token-name: imutil-token timeout: -1 activity-timeout: -1 allow-concurrent-login: true is-share: true token-style: uuid is-log: false is-print: off # Redis 配置 imutil.redis: host: 10.10.10.228 port: 6379 password: "Aa135790!123" database: 11 timeout: 2000 # 连接超时 ms connectTimeout: 2000 # 腾讯 IM 配置(密钥仅本工具持有,禁止下发到业务系统) imutil.tencent: sdkAppId: 1600138798 # 主应用 SDKAppID(待填) secretKey: "21c1616e59b4698355fa9707b24d4406c99d69be3cd5e4b95022c050ec86f935" # 主应用 SecretKey(待填) adminUserId: "administrator" # IM 管理员账号 apiHost: "console.tim.qq.com" # IM REST API 域名 usersigExpireDays: 7 # UserSig 有效期(天) callbackToken: "" # 回调鉴权 Token(控制台回调URL配置),为空则跳过签名校验(仅联调) # 管理后台配置(首次启动若 admin_user 表为空,用此账号初始化) imutil.admin: defaultUsername: admin defaultPassword: admin123 # 默认密码,登录后请尽快修改 # 分发工作线程配置 imutil.dispatch: workerCount: 4 # 分发工作线程数 fetchBatch: 50 # 每轮抢占条数 pollIntervalMs: 1000 # 空闲轮询间隔 maxRetry: 5 # 最大重试次数 retryBaseMs: 2000 # 重试基础间隔(指数退避 base) lockTimeoutMin: 3 # processing 超时阈值(分钟),超时由巡检重置 # 补拉配置(历史消息兜底,由 pullCheckJob 驱动) imutil.pull: convsPerRound: 20 # 每轮补拉会话数 maxMsgPerConv: 20 # 每会话每轮拉取条数上限 lookbackMinutes: 30 # C2C 拉取时间窗(最近N分钟) # 限流配置(按租户令牌桶) imutil.ratelimit: defaultImQps: 50 # 默认每租户 IM API QPS globalImQps: 200 # 全局 IM API QPS 上限(腾讯限制的 80% 安全边际) # 定时任务配置 solon.scheduling.job: # 死信/卡死 processing 巡检:每 1 分钟 dispatchRecoverJob: fixedDelay: 60000 zone: "+08" enable: true # 历史消息补拉巡检:每 5 分钟 pullCheckJob: fixedDelay: 300000 zone: "+08" enable: true # 分区自动建表:每天凌晨 0:10 partitionCreateJob: cron: "0 10 0 * * ?" zone: "+08" enable: true # 用量统计聚合:每小时 03 分跑上一小时窗口(避开整点边界) usageStatJob: cron: "0 3 * * * ?" zone: "+08" enable: true