rabbitmq-02 rabbitmq五种队列
1.消息队列RabbitMQ的五种形式队列
- 点对点(简单)的队列
- 工作(公平性)队列模式
- 发布订阅模式(fanout)
- 路由模式Routing
- 通配符模式Topics
2.点对点(简单)的队列
2.1 代码实现
2.1.1 添加依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
2.1.2 创建工具类
2.1.3 生产者
2.1.4 消费者
3.工作(公平性)队列模式
3.1 代码实现
3.1.1 添加依赖
- 同 2.1.1
3.1.2 生产者
3.1.3 消费者
4.发布订阅模式(fanout)
这个可能是消息队列中最重要的队列了,其他的都是在它的基础上进行了扩展。
功能实现:一个生产者发送消息,多个消费者获取消息(同样的消息),包括一个生产者,一个交换机,多个队列,多个消费者。
思路解读(重点理解):
- 一个生产者,多个消费者
- 每一个消费者都有自己的一个队列
- 生产者没有直接发消息到队列中,而是发送到交换机
- 每个消费者的队列都绑定到交换机上
- 消息通过交换机到达每个消费者的队列
该模式就是Fanout Exchange(扇型交换机)将消息路由给绑定到它身上的所有队列
注意:交换机没有存储消息功能,如果消息发送到没有绑定消费队列的交换机,消息则丢失。
4.1 代码实现
4.1.1 添加依赖
- 同2.1.1
4.1.2 生产者
4.1.3 邮件消费者
4.1.4 短信消费者
5.路由模式Routing
5.1 简介
生产者发送消息到交换机并指定一个路由key,消费者队列绑定到交换机时要制定路由key(key匹配就能接受消息,key不匹配就不能接受消息)
例如:我们可以把路由key设置为insert ,那么消费者队列key指定包含insert才可以接收消息,消费者队列key定义为update或者delete就不能接收消息。很好的控制了更新,插入和删除的操作。
采用交换机direct模式
5.2 代码实现
5.2.1 添加依赖
- 略
5.2.2 生产者
5.2.3 邮件消费者
5.2.4 短信消费者
6.主题模式(通配符模式)
6.1 简介
此模式实在路由key模式的基础上,使用了通配符来管理消费者接收消息。生产者P发送消息到交换机X,type=topic,交换机根据绑定队列的routing key的值进行通配符匹配;
- 符号#:匹配一个或者多个词lazy.# 可以匹配lazy.irs或者lazy.irs.cor
- 符号*:只能匹配一个词lazy.* 可以匹配lazy.irs或者lazy.cor
6.2 代码实现
6.2.1 添加依赖
- 略