首页 > Python资料 博客日记
RabbitMQ快速上手
2024-10-26 15:00:11Python资料围观31次
Python资料网推荐RabbitMQ快速上手这篇文章给大家,欢迎收藏Python资料网享受知识的乐趣
RabbitMQ核心概念
在安装完RabbitMQ的安装后,就可以登录到管理界面
界面的导航栏有六部分,解释什么意思之前,先看看RabbitMQ的工作流程
RabbitMQ是一个消息中间件,也是一个生产者消费者模型,他负责接收,存储并转发消息。
Producer和Consumer
Producer:生产者,是RabbitMQ Server的客户端,向RabbitMQ发送消息。
Consumer:消费者,也是RabbitMQ Server的客户端,从RabbitMQ接收消息。
Broker:其实就是RabbitMQ Server,只要是接收和收发消息。
•
⽣产者(Producer)创建消息, 然后发布到RabbitMQ中. 在实际应⽤中, 消息通常是⼀个带有⼀定业务逻辑结构的数据, ⽐如JSON字符串. 消息可以带有⼀定的标签, RabbitMQ会根据标签进⾏路由, 把消息发送给感兴趣的消费者(Consumer).
•
消费者连接到RabbitMQ服务器, 就可以消费消息了, 消费的过程中, 标签会被丢掉. 消费者只会收到消息, 并不知道消息的⽣产者是谁, 当然消费者也不需要知道.
•
对于RabbitMQ来说,⼀个RabbitMQ Broker可以简单地看作⼀个RabbitMQ服务节点, 或者RabbitMQ服务实例. ⼤多数情况下也可以将⼀个RabbitMQ Broker看作⼀台RabbitMQ服务器
Connection和Channel
Connection:连接,是客户端和RabbitMQ服务器之间的一个TCP连接,这个连接是建立消息传递的基础,它负责传输客户端和服务器之间的所有数据和控制消息。
Channel: 通道, 信道. Channel是在Connection之上的⼀个抽象层. 在 RabbitMQ 中, ⼀个TCP连接可以有多个Channel, 每个Channel 都是独⽴的虚拟连接. 消息的发送和接收都是基于 Channel的.
通道的主要作⽤是将消息的读写操作复⽤到同⼀个TCP连接上,这样可以减少建⽴和关闭连接的开销, 提⾼性能.
Virtual host
Virtual host: 虚拟主机. 这是⼀个虚拟概念. 它为消息队列提供了⼀种逻辑上的隔离机制. 对于
RabbitMQ⽽⾔, ⼀个 BrokerServer 上可以存在多个 Virtual Host. 当多个不同的⽤⼾使⽤同⼀个
RabbitMQ
Server 提供的服务时,可以虚拟划分出多个 vhost,每个⽤⼾在⾃⼰的 vhost 创建
exchange/queue 等
Queue
Queue: 队列, 是RabbitMQ的内部对象, ⽤于存储消息,多个消费者, 可以订阅同⼀个队列。
Exchange
Exchange: 交换机. message 到达 broker 的第⼀站, 它负责接收⽣产者发送的消息, 并根据特定的规则把这些消息路由到⼀个或多个Queue列中.
Exchange起到了消息路由的作⽤,它根据类型和规则来确定如何转发接收到的消息.
类似于发快递之后, 物流公司怎么处理呢, 根据咱们的地址来分派这个快递到不同的站点, 然后再送到收件⼈⼿⾥. 这个分配的⼯作,就是交换机来做的
RabbitMQ工作流程
1.
Producer ⽣产了⼀条消息
2.
Producer 连接到RabbitMQBroker, 建⽴⼀个连接(Connection),开启⼀个信道(Channel)
3.
Producer 声明⼀个交换机(Exchange), 路由消息
4.
Producer 声明⼀个队列(Queue), 存放信息
5.
Producer 发送消息⾄RabbitMQ Broker
6.
RabbitMQ Broker 接收消息, 并存⼊相应的队列(Queue)中, 如果未找到相应的队列, 则根据⽣产 者的配置, 选择丢弃或者退回给⽣产者
AMQP
AMQP(Advanced Message Queuing Protocol)是⼀种⾼级消息队列协议, AMQP定义了⼀套确定的消息交换功能, 包括交换器(Exchange), 队列(Queue) 等. 这些组件共同⼯作, 使得⽣产者能够将消息发送到交换器. 然后由队列接收并等待消费者接收. AMQP还定义了⼀个⽹络协议, 允许客⼾端应⽤通过该协议与消息代理和AMQP模型进⾏交互通信
web界面操作
RabbitMQ管理界⾯上的Connections,Channels, Exchange, Queues 就是和上⾯流程图的概念是⼀样的, Overview就是视图的意思, Admin是⽤⼾管理.
我们在操作RabbitMQ前, 需要先创建Virtual host
用户相关操作
添加用户:
观察用户是否添加用户成功:
用户相关操作:
点击用户Name,设置对虚拟机的操作权限
更新/删除用户
退出当前用户
虚拟机相关操作
在Admin标签页下,点击右侧Virtual Hosts ->Add a new virtual host设置虚拟主机名称
观察设置结果
此操作会为当前登录用户设置虚拟主机
RabbitMQ快速入门
1.引入依赖
<dependencies> <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.20.0</version> </dependency> </dependencies>
2.生产者代码
运行代码,观察结果
因为我们注释了资源释放的代码,在Connection和Channels也可以看到相关信息
3.消费者代码
因为信息被消费了,所以此时的信息为0
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
上一篇:一、Python基础语法(有C语言基础速成版)
下一篇:AWD的复现
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj