下午上客户UAT后,发现我的消息队列并不能接收到消息。
第一想法是,看看go有没有成功发送消息。
想要上rabbitmq控制台,但是最终没有成功,此处花费大半小时。
但是注意到有我需要的消息header,出现在了另两个队列消费日志中。
以为消息被其消费,于是为那两个队列增加了消息退回。
但是并没有解决问题,反而是控制台不断打印消息消费信息。
翻看代码以及数据库,并没有批次处理记录,怀疑是异常出现在尚未进行批次处理记录插入的地方,被捕获后没有输出日志。
增加日志打印后依旧无果,于是想到先回昨天成功接收消息的内部测试环境尝试。
结果是可以接收消息,剩下唯一的可能便是rabbitmq配置不正确。
对比交换机绑定结果发现交换机与队列并没有绑定,绑定后消息成功消费,但是仍然控制台不断打印消息消费信息,且批次处理状态为全部失败。
在不断调整Ack与Nack之后才意识到,go发消息为topic模式,而我和另两个队列都会各自接收到消息,但是三个队列互相独立,我消费他们的消息不影响另两个队列处理业务,至于批次处理失败是因为客户接口没有数据。
此时后台日志打印经修改方才恢复正常,查出流程未继续往下走的原因是消息的状态字段与此前商议不一致,修改后全部成功。