五大消息模型介绍(RabbitMQ 详细注释版)

名词介绍:

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.通配符模型

生产者代码:

消费者代码:

相关推荐
蜗牛互联网15 分钟前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西43 分钟前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨1 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
小卡车5551 小时前
java反射、自定义注解的应用(自定义分页)
java
BLUcoding2 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
yuniko-n2 小时前
【JUC】Lock 和 synchronzied 锁
java
西柚小萌新2 小时前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库
北极有牛2 小时前
cpp学习笔记--常量指针
java·开发语言·算法
java资料站2 小时前
二、Spring AI Alibaba · ChatModel
java·windows·spring
十年Java程序媛3 小时前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端