生产变更报了这个错误,百度了一下报这个错主要分为以下三种情况:
1.Broker模块不支持自动创建topic,并且topic没有被手动创建过
解决方案:在broker(mq)服务器上修改参数,使其可以自动生成
autoCreateTopicEnable=true
2.Broker模块没有正确连接到namesrv
解决方案:使用相关命令去搜索(这种情况出现概率很低,一般是nameser地址没有配置正确)
sh mqadmin clusterList -n localhost:9876
3.发送者(producer/生产者)没有连接到NAMESRV
解决方案:最大可能是发送者和mq服务器之间的网络或端口不通,可以使用ping或者telnet确定问题。如果ping或者telnet连接不通,需要联系运维工程师开通网络或端口权限
如果是自己的服务器,关一下防火墙
systemctl stop firewalld.service
我自身的情况稍微特殊一点
本次只是调整了代码逻辑,情况1和2可能性几乎为0,顺着发送者(producer/生产者)没有连接到namesrv的思路去看,发现mq逻辑并没有改动,但是有几个jar包的新增,jar里面有同名同路径的类(公司针对不同的mq重新写了自己的jar包,入口方法名称有同名同路径的类问题),他们取用的namesrv地址的配置参数名称不一样(也就是没有连接到namesrv),去掉了这个有同名同路径的类jar包,重启解决问题。
记一点:变更已经上线的应用,jar不能随意更新,即使没有用到,在加入过后也可能发生同名类导致的各种问题
文章借鉴于