RabbitMq为什么需要Exchange
看过rabbitmq官网的demo,没有交换机的也可以实现队列。后来场景复杂了,用到了exchange。具体上exchange有什么用处?能清晰的解答下吗?
看过rabbitmq官网的demo,没有交换机的也可以实现队列。后来场景复杂了,用到了exchange。具体上exchange有什么用处?能清晰的解答下吗?
2017-09-26
我觉得 消息队列正确的用法 应该是一个生产者对应一个 交换机。 一个 消费者对应一个 队列, 至于 分发的逻辑 是通过各种绑定来实现的。
例如 电子商务场景:产生订单的有很多 渠道 比如网站,团购,秒杀,第三方等等。每个 都 对应一个 交换机。产生的订单 数据是类似的 但key 可以是 商品类别加上id 等信息组合。比如 大类.小类.商品id 这种格式
刚开始的时候 只有一个 总仓 订单处理也就一个程序 一个消费者 也就一个队列。 所有交换机都绑定这个队列。这样所有订单都到总仓去了
慢慢生意大了 比如生鲜分出去了个 仓 有单独的处理程序了 也成了个新的队列 这样 在mq 后台 根据key 中大类是生鲜的绑定到新的队列就好了
再过段时间 某次秒杀,预计量比较大。实现准备了个小仓库 把这个秒杀商品预先包好存放在那单独处理了。这时运行个 新的程序 产生个 新的队列 ,这时就将秒杀交换机的 按照key 中的id为此商品的 绑定到新的队列。这样就可以了 而无论是秒杀的其他产品,还是在其他渠道上这个商品订单还是 总仓处理
其实 交换机还可以再绑交换机 多次分发更实现更复杂的逻辑。就是这么绑来绑去,实现 不用改代码就实现了整个信息流随着业务的变迁
举报