名词介绍:
1.生产者
:消息发布者,将消息发送到队列 queue
2.队列
:消息队列,负责接受并缓存消息
3.消费者
:订阅队列,处理队列中的消息
一:模型介绍
1.simple消息模型
一个生产者 一个队列 一个消费者
在此种消费模型下,若消费者对消息的处理速度较慢。那么当生产者不断向队列发送消息时,便会造成堵塞。
2.work消息模型
一个生产者 一个队列 多个消费者
由此模型衍生的 -> 能者多劳:消费者性能高的可以多消费消息
3. fanout消息模型
一个生产者 一个交换机 多个队列 多个消费者
这种模型下,生产着会将消息发送至交换机。再由交换机以广播的形式发送给所有消费者,由消费者在自己相应的队列获取消息。
这种模型存在一个缺点,就是无法对消息进行过滤。于是引出direct消息模型
4. direct消息模型
一个生产者 一个交换机 多个队列 多个消费者(队列绑定交换机时需要指定RoutingKey)
缺点:RoutingKey是需要提前固定写好的。那么当大量的消息到来时,RoutingKey的指定会影响到性能
5. topic消息模型: 开发中常用此种模型
一个生产者 一个交换机 多个队列 多个消费者(队列绑定交换机时使用的RoutingKey可以使用通配符)
通配符:* 匹配 一级 任意多个字符,# 匹配 多级 任意多个字符
例如:routingKey为"user.#",表示可以匹配"user.add"和"user.add.log"。
routingKey为"user.*",表示可以匹配"user.add",对于"user.add.log"则无法匹配。
二:案例代码
工具类:
1.简答模型
生产者代码:
消费者代码:
2.工作模型
生产者代码:
消费者代码:
3.广播模型
生产者代码:
消费者代码:
4.定向模型
生产者代码:
消费者代码:
5.通配符模型
生产者代码:
消费者代码: