点对点模式

通常基于拉取或者轮询的消息传送模型。
特点:发送到队列的消息被一个且只有一个消费者进行处理;生产者将消息放入消息队列后,由消费者主动的去拉取消息进行消费。
优点:消费者拉取消息的频率可以由自己控制。但是消息队列是否有消息需要消费,在消费者端无法感知,所以在消费者端需要额外的线程去监控。
image.png

发布订阅模式

基于消息送的消息传送模型,可以有多种不同的订阅者。
特点:生产者将消息放入消息队列后,队列会将消息推送给订阅过该类消息的消费者(类似微信公众号)。
优点:消费者被动接收推送,无需感知消息队列是否有待消费的消息。但消息队列无法感知消费者消费的速度,由于消费者的机器性能不一样,所以处理消息的能力也会不一样。
消息队列推送的速度是发布订阅模式的一个问题
假设三个消费者处理速度分别是8M/s、5M/s、2M/s,如果队列推送的速度为5M/s,则consumer3无法承受,如果队列推送的速度为2M/s,则consumer1、consumer2会出现资源的极大浪费。
image.png