在实际开发中,因为多人开发,你无法保证每个人在使用一些框架的时候不出现问题,臂如今天我们要说的rabbitMq交叉消费,这里的交叉消费是一个很大的问题,但是rabbitMQ是允许他这种特性存在,如果我们不清楚这个特性的存在,会导致收到不应该收到的消息,轻者增加消费端压力,重者增加数据错乱(我不是开玩笑的)。
这就等同我给我的女朋友(小美)发消息,我的女朋友(小红)也收到了。如果我说的是(小美今晚我去你家)? 哦豁,完犊子了吧。要翻车了吧,不嘚瑟了吧。
有人说不信?不信你往下看
创建routingkey与queue的绑定关系如下
1、Exchange = ddzl.gpu.center123
2、queue=queue.ddzl.gpu.center.discern.msg123 与 routingkey =queue.ddzl.gpu.center.discern.msg123 绑定
3、queue=queue.ddzl.gpu.center.discern.msg123 与 routingkey = queue.ddzl.gpu.center.discern.msg123.key绑定
可以看到。Exchange = ddzl.gpu.center123 两个不同的routingkey 对应的queue相同。
问题
我们先看下存在的问题,我的生产者往Routing key为:queue.ddzl.gpu.center.discern.msg123.key 发送的消息,
我的消费者Routing key为:queue.ddzl.gpu.center.discern.msg123却可以收到消息。