配置说明
所有配置说明
配置采用yaml格式,如果发现配置什么都不生效,请检查缩进是否正确
所有的配置都可以转换成对应的环境变量,配置在docker-compose.yaml的environment里
转换过程参考文档 环境变量
yaml
## 配置是yaml格式,请严格注意缩进.
mode: "release" # 运行模式 模式 debug 测试 release 正式 bench 压力测试
addr: "tcp://0.0.0.0:5100" # tcp监听地址
httpAddr: "0.0.0.0:5001" # http api的监听地址 默认:0.0.0.0:5001
rootDir: "./wukongimdata" # 数据存储目录
tokenAuthOn: false # 是否开启token验证 默认为false,如果不开启任何人都可以连接到此节点,生产环境建议开启
managerUID: "" # 管理员UID 默认为 ____manager
managerToken: "" # 管理员token 如果此字段有值,则API接口需要在请求头中添加token字段,值为此字段的值
wsAddr: "ws://0.0.0.0:5200" # websocket ws 监听地址
wssAddr: "wss://0.0.0.0:5210" # websocket wss 监听地址 如果打开则需要进行 wssConfig相关的证书配置
whitelistOffOfPerson: true # 是否关闭个人白名单 默认为true表示关闭个人白名单的验证
ginMode: "release" # gin框架的模式 debug 调试 release 正式 test 测试
external: # 公网配置
ip: "" # 节点外网IP,客户端能够访问到的IP地址,如果客户端是内网使用,这里也可以填写内网IP
tcpAddr: "" # 默认自动获取, 节点的TCP地址 对外公开,APP端长连接通讯 格式: ip:port
wsAddr: "" # 默认自动获取, 节点的wsAdd地址 对外公开 WEB端长连接通讯 格式: ws://ip:port (支持域名配置)
wssAddr: "" # 对外的wssAddr地址,也就是客户端真正连接的地址 格式:wss://ip:port (支持域名配置)
monitorAddr: "" # 默认自动获取, 节点的monitor地址 对外公开 监控服务 格式: ip:port
apiUrl: "" # 默认自动获取, 节点的http地址 对外公开 http api 格式: http://ip:port
wssConfig:
certFile: "" # wss证书文件路径
keyFile: "" # wss证书key文件路径
logger:
level: 0 # 日志级别 0:未配置,将根据mode属性判断 1:debug 2:info 3:warn 4:error
dir: "./logs" # 日志目录
lineNum: false # 是否打印行号
manager:
on: true # 是否开启管理后台
addr: "0.0.0.0:5300" # 监控监听地址 默认为 0.0.0.0:5300
demo:
on: true # 是否开启demo
addr: "0.0.0.0:5172" # demo监听地址 默认为 0.0.0.0:5172
channel:
cacheCount: 1000 # 频道缓存数量 频道被加载后会缓存到内存中,如果频道数量过多,会占用大量内存,可以通过此配置限制缓存数量
createIfNoExist: true # 频道不存在时是否自动创建 默认为true
subscriberCompressOfCount: 0 # 订阅者数多大开始压缩,如果开启默认采用gzip压缩(离线推送的时候订阅者数组太大 可以设置此参数进行压缩 默认为0 表示不压缩 )
tmpChannel:
suffix: "@tmp" # 临时频道后缀 带有此后缀的频道将被认为是临时频道,临时频道不会被持久化
cacheCount: 500 # 临时频道缓存数量
webhook: # 两者配其一即可 webhook配置 用于接收消息通知事件,详情请查看文档
httpAddr: "" # webhook的http地址 通过此地址通知数据给第三方 地址为你提供的api接口地址
grpcAddr: "" # webhook的grpc地址 当前httpAddr成为瓶颈的时候可以用grpc进行推送, 如果此地址有值 则不会再调用httpAddr配置的地址,格式为 ip:port,通讯协议请查看文档
msgNotifyEventPushInterval: 500ms # 消息通知事件推送间隔,默认500毫秒发起一次推送
msgNotifyEventRetryMaxCount: 5 # 消息通知事件消息推送失败最大重试次数 默认为5次,超过将丢弃
msgNotifyEventCountPerPush: 100 # 每次webhook消息通知事件推送消息数量限制 默认一次请求最多推送100条
datasource: # 数据源配置,不填写则使用自身数据存储逻辑,如果填写则使用第三方数据源,数据格式请查看文档
addr: "" # 数据源地址
channelInfoOn: false # 是否开启频道信息数据源的获取
conversation: # 最近会话配置
on: true # 是否开启最近会话
cacheExpire: 1d # 最近会话缓存过期时间 默认为1天,(注意:这里指清除内存里的最近会话缓存,并不表示清除最近会话)
syncInterval: 5m # 最近会话保存间隔,每隔指定的时间进行保存一次 默认为5分钟
syncOnce: 100 # 最近会话同步保存一次的数量 超过指定未保存的数量 将进行保存 默认为100
userMaxCount: 1000 # 用户最近会话最大数量,超过此数量的最近会话后最旧的那条将被覆盖掉 默认为1000
messageRetry: # 消息重试配置
interval: 60s # 重试间隔 默认为60秒
scanInterval: 5s # 每隔多久扫描一次超时队列,看超时队列里是否有需要重试的消息
maxCount: 5 # 消息最大重试次数, 服务端持有用户的连接但是给此用户发送消息后在指定的间隔内没有收到ack,将会重新发送,直到超过maxCount配置的数量后将不再发送(这种情况很少出现,如果出现这种情况此消息只能去离线接口去拉取)
userMsgQueueMaxSize: 0 # 用户消息队列最大大小,超过此大小此用户将被限速,0为不限制
deadlockCheck: false # 是否开启死锁检测
pprofOn: false # 是否开启pprof
# 认证配置
auth:
kind: 'jwt' # 认证方式 jwt: jwt认证 none: 无需认证
# 用户配置
#用户名:密码:资源:权限 *表示通配符 资源格式也可以是[资源ID:权限]
# 例如: - "admin:pwd:[clusterchannel:rw]" 表示admin用户密码为pwd对clusterchannel资源有读写权限,
# - "admin:pwd:*" 表示admin用户密码为pwd对所有资源有读写权限
users:
- "admin:pwd:*"
- "guest:guest:[*:r]" # guest用户密码为guest对所有资源有读权限
jwt:
secret: "" # jwt密钥,这个配置比较重要,需要自己生成一个随机字符串(建议随机的32位字符串),用于jwt的加密
expire: 30d # jwt过期时间 默认为30天
trace: # 数据追踪
prometheusApiUrl: "http://xx.xx.xx.xx:9090" # prometheus的内网地址,用于获取监控数据
# 集群配置
cluster:
nodeId: 1001 # 节点ID
addr: "tcp://0.0.0.0:11110" # 分布式监听地址
serverAddr: "" # 节点之间能访问到的内网通讯地址 例如:xx.xx.xx.xx:11110
apiUrl: "" # 节点的http地址 内网地址,节点之间需要能访问到 格式: http://ip:port 例如:http://xx.xx.xx.xx:5001
slotCount: 64 # 槽位(分区)数量,默认是64个
slotReplicaCount: 3 # 槽位(分区)副本数量,默认是3个
channelReplicaCount: 3 # 频道副本数量,默认是3个
# 初始节点列表 格式 nodeId@ip:port,分布式初始化时的节点列表,列表包含本节点自己
# 例如:
# initNodes:
# - "1001@192.168.1.12:11110"
# - "1002@192.168.1.13:11110"
# - "1003@192.168.1.14:11110"
initNodes:
- ""
# 集群种子节点地址 格式 nodeId@ip:port
# 例如:
# seed:
# - "1001@192.168.1.12:11110"
seed:
- ""
环境变量
WuKongIM可以通过配置环境变量来覆盖配置文件的配置。
比如配置文件里的 webhook 地址配置
文件的格式:
yaml
...
webhook
httpAddr: "http://xxxxxx"
...
环境变量的格式:
WK_WEBHOOK_HTTPADDR: http://xxxxxx
规则: WK为固定前缀,层级关系通过 "_"符号隔开,全都大写