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)

在这里插入图片描述
在这里插入图片描述
这个可能是消息队列中最重要的队列了,其他的都是在它的基础上进行了扩展。
功能实现:一个生产者发送消息,多个消费者获取消息(同样的消息),包括一个生产者,一个交换机,多个队列,多个消费者。

思路解读(重点理解):

  1. 一个生产者,多个消费者
  2. 每一个消费者都有自己的一个队列
  3. 生产者没有直接发消息到队列中,而是发送到交换机
  4. 每个消费者的队列都绑定到交换机上
  5. 消息通过交换机到达每个消费者的队列

该模式就是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 添加依赖

6.2.2 生产者

6.2.3 邮件消费者

6.2.4 短信消费者