系统启动配置项及示例
config.properties是gateway自身启动的一些配置项 常用配置如下:
#启动模式, 启动时拉取数据或同步数据的方式
#yamlpath可配置一个文件或者一个目录,
#如果是目录如gateway.yamlPath=./conf/yaml,会扫描此目录下所有以.yaml结尾的文件
gateway.yamlPath=./conf/yaml/gateway.yaml
gateway.libPath=./lib
gateway.logConfigPath=./conf/logback.xml
#共享线程池设置
gateway.sharedPool.available=false
gateway.sharedPool.corePoolSize=5
gateway.sharedPool.maximumPoolSize=50
gateway.sharedPool.keepAliveTime=60
gateway.sharedPool.timeUnit=SECONDS
#定时任务模块设置
gateway.task.available=true
gateway.task.tickPeriod=5000
gateway.task.idleTickStep=10000
gateway.task.maxTickPeriod=100000
#agent模块, 独自监听一个端口, 可以通过向该端口发请求控制网关内存中的对象状态,
#可以达到修改运行中的网关配置的效果, 可自定义扩展功能
#网关关闭命令, 网关守护进程, 都依赖该端口
gateway.agent.available=false
#如果该模块不启动或者该端口未开启则守护进程和关闭命令不会生效
gateway.agent.port=8888
gateway.agent.protocolType=http
gateway.agent.contentType=json
#是否启动网关守护进程
#gateway.agent.initFunction=protect
#心跳间隔
gateway.agent.heartBeat=10
线程共享池
Gateway使用共享线程池限制gateway使用的线程数量,避免因创建过多的channel造成系统资源耗尽的问题。
属性 | 描述 |
---|---|
available | 是否启用 |
corePoolSize | 共享池基础大小,默认6 |
maximumPoolSize | 共享池最大线程数,默认100 |
keepAliveTime | 共享池线程最大闲置时间,默认60000 |
unit | 共享池闲置时间计算单位,默认MILLISECONDS |
环境变量机制
在不同的环境下,可以使用不同的环境变量配置文件,比如,dev,uat,prd等环境,在切换切换网关的使用场景时, 需要加载不同的环境变量文件,可通过切换环境变量类型,自动加载对应类型的环境变量文件,也可以重新指定环境变量文件的路径.
如何切换环境变量类型
网关提供了三种方式来指定当前环境类型,网关会根据指定的当前环境类型,来寻找对应的环境变量配置文件,如果什么都不指定,默认会去conf目录下获取env.properties文件.
通过指定网关入口的main函数的传入参数,
如网关的启动命令
java -Xms64m -Xmx256m -cp ../lib/gateway-boot.jar;../lib/gateway-core.jar; com.tesla.gateway.boot.Main dev
这样就指定了环境变量文件的类型, 实际会去加载 env-dev.properties
从系统变量中获取环境变量类型,
如果在操作系统级别的环境变量中设置了env.id=prd, 这里规定,key必须为env.id , 则获取到的环境变量配置文件的命名应为env-prd.properties.
从jvm参数中获取环境变量类型,
如果在jvm参数中设置了env.id=uat,则获取到的环境变量配置文件的命名应为env-uat.properties.
如何指定环境变量文件路径
网关提供了三种方式来指定环境变量配置文件的路径,路径可以是一个文件夹,也可以是一个文件. 如果路径是一个文件,则不需要指定环境变量类型
通过指定网关入口的main函数的传入参数,
如网关的启动命令
java -Xms64m -Xmx256m -cp ../lib/gateway-boot.jar;../lib/gateway-core.jar; com.tesla.gateway.boot.Main dev C:/Users/test/gateway/env
这样就指定了环境变量文件的类型, 和环境变量文件夹的路径, 网关启动时会去 C:/Users/test/gateway/env 文件夹下加载 env-dev.poperties
从系统变量中获取配置文件的路径
如果在操作系统级别的环境变量中设置了env.path=./conf, 这里规定,key必须为 env.path, 网关启动时会去conf目录下加载对应类型的配置文件
从jvm参数中获取环境变量路径
如果在jvm参数中设置了env.path=./conf , 网关启动时会根据环境变量的类型加载conf目录下对应的文件
如果环境变量路径未配置
网关会首先遍历conf目录下所有的文件,然后遍历home目录下所有的文件(home目录就是Conf目录的上一层),然后遍历classpath目录, 直到找到符合环境变量类型的文件
如果未指定env.id, 且未找到环境变量文件,不会报错
环境变量文件配置示例
#pathNo
epcc.pathNo=1285
qcup.pathNo=1286
# cmbc cacf config(anbao)
cmbc.ca.config.server.url=http://127.0.0.1:8000
## RSA config
cmbc.ca.config.digest.alg=sha256
cmbc.ca.config.timeout=10000
cmbc.ca.config.appid=ECB
cmbc.ca.config.connect.timeout=10000
cmbc.ca.config.vstk.version=2.0.306.5
cmbc.ca.config.enc.alg=aes
## SM3 config
cmbc.ca.config.sm.digest.alg=SM3
cmbc.ca.config.sm.timeout=10000
cmbc.ca.config.sm.appid=ECB
cmbc.ca.config.sm.connect.timeout=10000
cmbc.ca.config.sm.vstk.version=2.0.306.5
cmbc.ca.config.sm.enc.alg=SM4
cmbc.sm3.enc.sn=4000421180
gateway.wlink.port=8421
gateway.nlink.port=8422
epcc.wlink.uri=/epcc/cmbcService.html
qcup.wlink.uri=/qcup/cmbcService.html
pcip.nlink.addr=127.0.0.1:6898
pcip.nlink.dist.addr=127.0.0.1:6898
epcc.idc.started.1=true
epcc.idc.flag.1=10
epcc.idc.url.1=http://127.0.0.1:8888/preSvr10
epcc.idc.started.2=true
epcc.idc.flag.2=11
epcc.idc.url.2=http://127.0.0.1:8888/preSvr11
epcc.idc.started.3=true
epcc.idc.flag.3=20
epcc.idc.url.3=http://127.0.0.1:8888/preSvr20
epcc.idc.flag.6=31
epcc.idc.url.6=http://127.0.0.1:8888/preSvr31
epcc.idc.url.default=http://127.0.0.1:8888/preSvr10
qcup.url=http://127.0.0.1:8889/
环境变量的获取
如在config.properties中或者yaml配置文件中获取环境变量, 统一格式为%{环境变量中的key}, 如想要获取 环境变量中 epcc.pathNo=1285 在yaml文件或config文件中 使用%{epcc.pathNo}
如下:
outbound_channel#outbound_channel_epcc:
values:
#出访网联
- id: outbound_channel_epcc
channelType: outbound
protocolType: http
contentType: http-xml
loadBalance: custom
connectorRouterExpression: 'outbound_connector_epcc${IDCFLAG}'
available: true
preParserFilters: XmlMsgParseSignFilter
postParserFilters: XmlMsgVerifySignFilter
prePackerFilters: XmlMsgAddHeaderFilter
postPackerFilters: [ XmlMsgAddSignFilter, RequestHttpHeadersFilter, OutboundReachedFilter ]
localRecognizers:
- id: request_http_headers_recognizer
type: localContext
keyMap:
request_http_headers:
Accept-Encoding: 'identity'
Content-Type: 'application/xml;charset=utf-8'
Connection: 'close'
Content-Length: '$'
MsgTp: '${outMsgTp}'
OriIssrId: 'C1030511000483'
values:
- id: outbound_connector_epcc
started: true
uri: '%{epcc.idc.url.default}'
connectionConfig: { useConnectionPool: false }
- id: outbound_connector_epcc%{epcc.idc.flag.1}
started: %{epcc.idc.started.1}
uri: '%{epcc.idc.url.1}'
connectionConfig: { useConnectionPool: false }
- id: outbound_connector_epcc%{epcc.idc.flag.2}
started: %{epcc.idc.started.2}
uri: '%{epcc.idc.url.2}'
connectionConfig: { useConnectionPool: false }
- id: outbound_connector_epcc%{epcc.idc.flag.3}
started: %{epcc.idc.started.3}
uri: '%{epcc.idc.url.3}'
connectionConfig: { useConnectionPool: false }
配置示例
config_nozk.properties,注意该配置文件在放到Conf目录下后, 命名一定要为config.properties