RabbitMQ的概念与使用

什么是MQ?

MQ 是消息队列(Message Queue)的简称。消息队列是一种应用程序间通信的方式,用于在不同的应用程序之间传递消息。它通过解耦发送者和接收者之间的直接依赖关系,提供了一种异步、可靠的消息传递机制。

什么是RabbitMQ?

RabbitMQ 是一个开源的消息队列中间件,它实现了高度可靠、灵活和可扩展的消息传递模型。作为消息队列系统,RabbitMQ 提供了在分布式应用程序之间传递消息的功能,并支持多种消息传递模式。

RabbitMQ 的主要特点和概念包括:

  1. 消息生产者和消费者:RabbitMQ 允许应用程序作为消息的生产者将消息发送到 RabbitMQ 的消息队列中,并允许其他应用程序作为消费者从队列中获取并处理消息。

  2. 消息队列:RabbitMQ 使用消息队列作为消息的中转站,生产者将消息发送到队列中,消费者从队列中获取并处理消息。消息队列充当了应用程序之间的解耦器,使得生产者和消费者之间不需要直接通信。

  3. 交换机(Exchange):交换机是 RabbitMQ 接收消息并将其路由到队列的组件。它根据一定的规则(例如路由键)将消息发送到一个或多个队列中。

  4. 队列绑定:消费者通过将队列绑定到交换机上来接收特定的消息。队列绑定指定了从哪个交换机接收消息以及如何路由消息到队列。

  5. 消息确认:RabbitMQ 支持消息的确认机制,即消费者在成功处理消息后向 RabbitMQ 发送确认信息,告知 RabbitMQ 可以将消息标记为已消费。这确保了消息不会在处理失败时丢失,并确保消息的可靠传递。

  6. 消息持久化:RabbitMQ 允许将消息和队列进行持久化,以确保在服务器重启或发生故障时消息不会丢失。

  7. 路由模式:RabbitMQ 支持多种路由模式,例如直接路由、主题路由和扇出路由,以满足不同的消息传递需求。

RabbitMQ结构图:

五种订阅模型:

分别有:

java 复制代码
基本消息队列(BasicQueue)
工作消息队列(WorkQueue)
Fanout Exchange:广播
Direct Exchange:路由
Topic Exchange:主题

ps:其中广播指的是,生产者将信息发送到交换机,然后交换机选择一个队列或多个队列进行发送消息,然后消费者订阅了那个队列,才能收到哪个队列的消息。

ps:路由指的是Direct Exchange 会将接收到的消息根据规则路由到指定的Queue,因此称为路由模式(routes)

ps:主题:和路由方式类似,只不过key需要两部分组成。

练习:

在Docker上进行联系,首先先拉去RabbitMQ,然后运行镜像得到容器。

然后根据自己的IP地址进行访问比如:http://192.168.xx.xx:15672

登录成功界面:

然后进行代码编写测试。

相关推荐
XMAIPC_Robot31 分钟前
NXP i.MX95 + FPGA 异构计算平台 — 工业多域融合 AI 加速嵌入式控制解决方案
人工智能·分布式·fpga开发·能源·rk3576+fpga
方方洛15 小时前
ray教程-13-RayTrain与分布式训练
人工智能·分布式·机器学习
黄俊懿1 天前
【架构师从入门到进阶】第七章:缓存和存储的优化思路——第一节:缓存概述
数据结构·数据库·分布式·缓存·架构·系统架构·1024程序员节
红海云1 天前
两台DGX Spark部署DeepSeek的实战边界
大数据·分布式·spark
GlobalInfo2 天前
上新 | 全球及中国起重机摄像系统行业研究报告(2026版):市场现状、行业前景与占有率分析
大数据·分布式·微服务·ai·相机
方方洛2 天前
ray教程-11-可观测性与调试
人工智能·分布式·机器学习
samforce2 天前
为什么微服务会退化成“分布式单体”?——软件架构里的嵌套率传导定律
人工智能·分布式·微服务·架构·软件架构·结构认知
每天一道题3 天前
Kafka 是如何工作的?从 Broker、Partition、Offset 到 Consumer Group
分布式·kafka
用户1494484813203 天前
为什么大厂很少直接用 2PC/TCC?聊聊分布式事务在真实业务里的落地套路
分布式·后端
code_slave(码畜)3 天前
微服务架构落地:分库分表实战(下) —— 分布式主键、跨分片查询与分页聚合防坑
数据库·spring boot·分布式·spring cloud·微服务·架构·分库分表