RabbitMQ 5种工作模式介绍和Springboot具体实现

RabbitMQ有5中工作模式:简单模式、工作队列模式、发布/订阅模式、路由模式和主题模式

简单模式(Simple Mode)

简单模式是最基本的工作模式,也是最简单的模式。在简单模式中,生产者将消息发送到一个队列中,然后消费者从该队列中接收并处理消息。这种模式下,一个生产者可以发送多个消息,但只有一个消费者能够接收和处理这些消息。简单模式适用于单个生产者和单个消费者的场景。

具体实现

  1. 导入依赖、在依赖文件配置rabbitmq(消费者和生产者程序都要实现)
XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
java 复制代码
spring:
  rabbitmq:   
    host: 192.168.10.100 # 自己的虚拟机IP
    port: 5672 # 端口
    virtual-host: /root # 虚拟主机
    username: root # 用户名
    password: root # 密码
  1. 创建消费者(一个程序)
java 复制代码
@Component
public class SimpleModeProducer {
    
    @Autowired
    private RabbitTemplate rabbitTemplate;//注入中央类
    
    public void sendMessage(String queueName, String message) {
        rabbitTemplate.convertAndSend(queueName, message);
        System.out.println("发送的消息: " + message);
    }
}

3.创建消费者(另一个程序)

java 复制代码
@Component
public class SimpleModeConsumer {

    @RabbitListener(queues = "simple.queue")//监听队列,自动检测
    public void receiveMessage(String message) {
        System.out.println("接收到的消息: " + message);
    }
}
  1. 测试(在生产者程序)
java 复制代码
@SpringBootTest
public class SimpleModeTest {

    @Autowired
    private SimpleModeProducer producer;

    @Test
    public void testSimpleMode() {
        producer.sendMessage("simple.queue","hello, rabbitmq!");
    }
}

工作队列模式(Work Queue Mode)

工作队列模式也被称为任务队列模式,在工作队列模式中,生产者将消息发送到一个队列中,多个消费者同时监听该队列,并竞争地接收消息进行处理。每个消息只能被一个消费者接收,确保消息的唯一性。工作队列模式可以实现任务的并行处理,提高系统的处理能力。

发布/订阅模式(Publish/Subscribe Mode)

发布/订阅模式将消息发送到交换机(exchange),然后交换机将消息广播给所有绑定的队列。每个队列都有自己的消费者,从而实现了消息的广播。在发布/订阅模式中,生产者将消息发送到交换机,而不是直接发送到队列。交换机根据绑定的队列将消息进行广播。这种模式适用于需要将消息广播给多个消费者的场景。

路由模式(Routing Mode)

路由模式在发布/订阅模式的基础上增加了路由键(routing key)的概念。生产者将消息发送到交换机,并指定一个路由键。交换机根据路由键的匹配规则将消息发送到相应的队列。消费者可以选择订阅特定的路由键,只接收符合条件的消息。这种模式适用于需要根据消息的属性或条件进行消息路由的场景。

主题模式(Topic Mode)

主题模式是路由模式的扩展,它使用通配符来匹配路由键。生产者将消息发送到交换机,并指定一个主题(topic)。交换机根据主题的模式匹配将消息发送到符合条件的队列。主题模式可以实现更灵活的消息路由,可以根据不同的主题将消息发送给不同的队列。这种模式适用于需要根据消息的主题进行灵活路由的场景。

相关推荐
TT哇14 分钟前
@[TOC](计算机是如何⼯作的) JavaEE==网站开发
java·redis·java-ee
Tina学编程21 分钟前
48Days-Day19 | ISBN号,kotori和迷宫,矩阵最长递增路径
java·算法
青川入梦28 分钟前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
执子手 吹散苍茫茫烟波1 小时前
leetcode415. 字符串相加
java·leetcode·字符串
小韩博1 小时前
网络安全(Java语言)脚本 汇总(二)
java·安全·web安全
萤丰信息1 小时前
技术赋能安全:智慧工地构建城市建设新防线
java·大数据·开发语言·人工智能·智慧城市·智慧工地
带刺的坐椅1 小时前
Java MCP 的鉴权?好简单的啦
java·鉴权·mcp·solon-ai
Pocker_Spades_A1 小时前
飞算JavaAI家庭记账系统:从收支记录到财务分析的全流程管理方案
java·开发语言
33255_40857_280592 小时前
掌握分页艺术:MyBatis与MyBatis-Plus实战指南(10年Java亲授)
java·mybatis
Ashlee_code2 小时前
香港券商智能櫃台系統技術解決方案——融合跨境清算與AI風控,助力券商把握滬港雙市爆發機遇**
java·科技·金融·重构·架构·系统架构·php