RabbitMQ安装、配置、使用以及相关概念详解

本文介绍了RabbitMQ,它是开源的消息队列服务软件,由Erlang写成,具有易扩展、速度快等优点。阐述了其关键概念、消息通信过程,介绍了三种常用Exchange类型。还提供了安装、使用的相关博客链接,以及面试题和Spring Boot使用RabbitMQ的参考文章。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rabbitMQ简介

RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
常用的消息中间件有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ等。RabbitMQ 作为主流的消息队列之一,遵循 AMQP(Advanced Message Queuing Protocol)协议,由内在高并发的 Erlang 语言开发,通常用在对可靠性要求比较高的实时消息传递上。每个消息队列中间件的名称都有独特的含义,RabbitMQ 也是如此,即代表像兔子一样敏捷而且繁殖起来很疯狂的 MQ。通过名字很容易看出RabbitMQ 的一个优势:易扩展、速度快,这个优势让 RabbitMQ 很快得到业内很多企业的认可。除了这个显著优势之外,RabbitMQ还有以下优点。安装部署简单,上手门槛低,符合AMQP标准。企业级消息队列,经过大量实践检验的高可靠性。有强大的Web管理页面。支持消息持久化、消息确认机制和灵活的任务分发机制等,功能非常丰富。

关键概念

关于RabbitMQ需要掌握以下几个概念。
生产者(Producer):消息的发送者,即把消息推送到消息服务器的程序。
消费者(Consumer):消息的接收者,即接收消息的程序。
队列(Queue):是RabbitMQ的内部对象,用于存储消息,是一个有序的消息集合。在Queue中,消息会以FIFO(First Input First Output)的方式排队。Queue可以设置为持久化、临时和删除等状态。
交换机(Exchange):消息交换机,它指定消息按什么规则路由到哪个Queue。在 RabbitMQ 中,生产者并非直接将消息发送给消费者,而是先把消息发送给Exchange。生产者在发送消息时,还会发送一个Routing key,Exchange会根据这个 key 值按照一定的规则与指定的 Queue 进行绑定,再把消息路由给这些Queue。和Queue一样,Exchange也可以设置为持久化、临时和删除等状态。
绑定令牌(Routing key):Exchange和Queue进行绑定时需要的令牌。
绑定(Binding):将Exchange和Queue按照指定的绑定令牌进行绑定。

消息通信过程

消息通信过程如下图所示。
(1)消息生产者(图中的 P)生产消息并投递到交换机(图中的 X)中,投递时携带Routing key。
(2)交换机和队列(图中的长方形区域)通过绑定令牌进行绑定。
(3)消费者(图中的C1、C2和C3)可以从其监听的队列中获取消息并消费,至于监听哪个队列需要消费者通过队列的名称自行指定。
在这里插入图片描述
每个消费者都有自己对应的队列,多个消费者可以订阅同一个队列,这时队列中的消息会被平均分配给每个消费者进行处理,而不是每个消费者都收到所有的消息进行处理。
RabbitMQ常用的Exchange类型有三种:direct、topic、fanout。
direct(路由模式):生产者将消息发送到交换机并添加绑定令牌,队列携带绑定令牌绑定到交换机,如果生产者添加的绑定令牌和队列携带的绑定令牌相同,则拥有此队列的消费者即可获取生产者发送的消息。这里的两个绑定令牌要求是全字匹配的。
topic(通配符模式):与路由模式大致相同,唯一不同的地方是绑定令牌在进行匹配时采用的是模糊匹配,具体的模糊匹配方式在下面的整合步骤中会详细介绍。
fanout(订阅模式):把所有发送到该交换机的消息投递到所有与它绑定的队列中,无须关心进行匹配的两个绑定令牌是否相同。

rabbitMQ的安装

这里转载一篇博客,对于安装过程写的十分详细。
https://www.cnblogs.com/saryli/p/9729591.html

rabbitMQ的使用

在浏览器输入http://localhost:15672/。localhost可以换成你的服务器ip。就进入rabbitMQ的管理页面了,然后输入默认用户名和密码。
页面的一些使用,参见这封博客:
https://caoju.blog.youkuaiyun.com/article/details/109332498?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.baidujs&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.baidujs

RabbitMQ面试题(附答案)

rabbitMQ的面试题,这里看到了两篇文章,已经写的很好了,转载一下:https://blog.youkuaiyun.com/o9109003234/article/details/115843165
https://www.cnblogs.com/woadmin/p/10537174.html

springboot使用rabbitMQ

https://blog.youkuaiyun.com/qq_35387940/article/details/100514134

### RabbitMQ 快速入门实战教程 #### 一、安装 RabbitMQ 服务器 对于基于 Debian 或 Ubuntu 的 Linux 发行版,可以使用如下命令完成 RabbitMQ 服务器的安装: ```bash sudo apt-get update sudo apt-get install rabbitmq-server ``` 上述命令会更新软件包列表并安装最新的 RabbitMQ 版本[^3]。 #### 二、启动 RabbitMQ 服务 一旦安装过程结束,可以通过下面这条指令来启动 RabbitMQ 服务: ```bash sudo service rabbitmq-server start ``` 这一步骤确保了 RabbitMQ 能够正常运行于后台进程中[^1]。 #### 三、配置环境准备 为了验证消息传递功能,在开始编写应用程序之前还需要执行一些额外的操作。比如导入官方 GPG 密钥以校验下载文件的真实性与完整性: ```bash rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc ``` 此操作有助于保障系统的安全性以及后续依赖项安装的安全性[^2]。 #### 四、RabbitMQ 核心概念解析 - **生产者(Producer)**:发送消息到交换机的一方。 - **消费者(Consumer)**:接收来自队列的消息处理程序。 - **绑定(Binding)**:定义了一个特定条件下的路由关系,即如何将消息从某个交换机转发至指定队列。 - **交换器.Exchange**:负责接收来自生产者的原始数据流,并依据预设规则分发给不同的队列。 - **队列.Queue**:存储待消费的信息实体;具有持久化特性可防止因意外断电等原因造成的数据丢失。 以上便是关于 RabbitMQ 基础组件间交互机制的大致描述。 #### Python 示例代码连接 RabbitMQ 并发布/订阅消息 ```python import pika def send_message(): connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue='hello') message = 'Hello World!' channel.basic_publish(exchange='', routing_key='hello', body=message) print(f" [x] Sent '{message}'") connection.close() if __name__ == '__main__': send_message() ``` 这段简单的例子展示了怎样利用 Pika 库创建一个名为 "hello" 的新队列并向其中写入一条测试性质的文字信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值