cat
cat copied to clipboard
CAT 客户端如何做到配置分离?
当我写了一个应用,接入CAT client 以后, 我需要设置 CAT server 的配置, 目前我把client.xml 放在 META-INF 目录里,似乎是生效的。 但是当我打包以后就存在一个问题, 我的应用可能在不同的环境里, 比如在测试环境 他的 cat server 是 cat.testing.aaa.com , 到了生产 可能变成一个 集群 cat1.prod.aaa.com,cat2.prod.aaa.com,cat3.prod.aaa.com 这样的话,我就无法在构建软件包的时候写死, 那么我应该怎么做完成 cat 配置和应用的分离呢?
在不同的环境机器上,固定路径下维护这个文件: /data/appdatas/cat/client.xml类似这个路径。然后这个配置在不同的环境,配置是ip列表是不一样的,不要放在代码里。
在不同的环境机器上,固定路径下维护这个文件: /data/appdatas/cat/client.xml类似这个路径。然后这个配置在不同的环境,配置是ip列表是不一样的,不要放在代码里。
如果是docker 呢? 怎么解决这个问题?
在不同的环境机器上,固定路径下维护这个文件: /data/appdatas/cat/client.xml类似这个路径。然后这个配置在不同的环境,配置是ip列表是不一样的,不要放在代码里。
能否从环境变量里注入这个参数?
在不同的环境机器上,固定路径下维护这个文件: /data/appdatas/cat/client.xml类似这个路径。然后这个配置在不同的环境,配置是ip列表是不一样的,不要放在代码里。
能否从环境变量里注入这个参数?
也是个办法,可以的,可以尝试看看。
在不同的环境机器上,固定路径下维护这个文件: /data/appdatas/cat/client.xml类似这个路径。然后这个配置在不同的环境,配置是ip列表是不一样的,不要放在代码里。
能否从环境变量里注入这个参数?
你可以尝试着用docker的volume来传递这个参数,把生产上的一些配置文件通过volume映射到容器内部
如果我一台机器上启动2个应用 想把消息发往2个不同的cat server 也做不到??
目前看来只能重写Cat方法加载环境变量来实现配置分离
本来是维护client.xml文件,后来我们单位的运维觉得麻烦。。。 然后,我是这么解决的,我写了一个Java文件,这个文件每次被spring扫描到会触发里面的static静态文件块 这个方法里读取运维在启动路径里配置的环境变量告诉我当前是哪个环境,我去替换掉当前机器的client.xml文件 PS:每次删除client.xml,删除client_cache.xml,然后重新写入一份新的client.xml 测试通过!
直接改client代码,从环境变量获取Cat Server地址,代码里内置XML模版组装下就好了
直接改client代码,从环境变量获取Cat Server地址,代码里内置XML模版组装下就好了
我也是这么做。