项目第一次引入spring boot 封装的rabbitMQ框架,用于接收库存状态的消息,用于实时更新。spring
rabbitMQ开发过程当中双方须要提早约定如下数据:json
上图为拿到的数据格式约定,exchange为topic。然而调试过程当中遇到如下问题bash
以上,让我深入体会到契约精神多么重要。因为种种数据格式问题,严重拖慢了开发进度。然鹅,生产方其实并未意识到这个问题,潜意识认为本身处于数据链路的上游,就能够随意修改约定好的格式服务器
终于开心(kubi)的完成了开发测试过程,准备开开心心线上作发布了。结果代码在部署过程当中大量报错,服务器直接done掉了。查看报错信息app
method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'type' for exchange 'sim2es' in vhost '/': received 'topic' but current is 'fanout', class-id=40, method-id=10)
复制代码
exchange须要fanout类型,我消费方定义的是topic类型。 什么鬼,明明测试环境是topic类型,到线上摇身一变变成广播fanout了?通过与生产方沟通,发现生产方为了本身作线上消费的测试,上线的时候把exchange类型顺手改为了fanout,致使与我消费方的topic类型不匹配,消费方直接声明queue报错。 生产方是没有想到这样改会致使exchange类型不匹配?仍是其实根本不知道这个知识点,咱也不敢问。直接让他老老实实把exchange类型改回topic。框架
以上,每一个开发都应该严格按照开发规范,熟悉mq的各个字段的含义和用法,而不是不动脑筋就随便乱改,害人害己啊。测试
在不熟悉的领域更应该多查看资料,因为开发大量使用框架,一些底层的东西被很好的封装了起来,多阅读源码,才能更好去使用框架ui