一、前言
之前的博客中提及的消息抽象模型,就是简单队列。
简单队列的不足时:耦合性高。生产者和消费者一 一对应,如果我想有多个消费者消息队列中消息,这时简单队列就不能满足啦,如果队列名更改,这时候得同时变更。
本篇博客将谈一谈其他队列。
二、工作队列
首先谈一谈工作队列:
为什么会出现工作队列?Simple队列是一 一对应的,而在我们实际开发中,生产者发送消息是毫不费力的(时间可以忽略不计),而消费者一般是要和业务结合,消费者接收到消息之后就需要大量时间(相对生产者发送消息而言)进行处理,这时队列就会积压很多消息。
因此工作队列应运而生,工作队列完美解决了消费方积压消息的问题。
MQ中一个消息只能被消费一次,即消息要么被C1获取,要么被C2获取,感觉有点像集群。
有两种:Round-robin、Fair dispatch
三、订阅模式
接下来谈一谈publish_subscribe订阅模式
比如我们订阅 微信公众号,就能收到公众号推送的消息
特点如下:
1个生产者,多个消费者
每一个消费者都有自己的队列
生产者没有直接把消息发送对队列,而是发给了Exchange(交换机、转发器)
每个队列都要绑定到交换机上
生产者发送的消息经过交换机,到达队列,就能够实现一个消息被多个消费者消费啦。
四、路由模式
解读:
路由模式是在订阅模式基础上的完善,可以在生产消息的时候,加入Key值,与key值匹配的消费者消费消息。