Python三方库:Pika(RabbitMQ基础使用)

https://www.cnblogs.com/-hz01/p/17985502

 

 

Python有多种插件都支持RabbitMQ,本文介绍的是RabbitMQ推荐的Pika插件。使用pip直接安装即可 pip install pika 。

一、RabbitMQ简介

1. MQ简介

MQ(Message Queue,消息队列),是一个在消息传输过程中保存消息的容器,多用在分布式系统之间进行通信。

MQ优势

  • 应用解耦:提高系统容错性和可维护性。
  • 异步提速:提升用户体验和系统吞吐量,MQ可短时间接收和保存大量消息(请求),其他服务可以异步地进行消息的消费。
  • 削峰填谷:提高系统稳定性,当MQ中保存了大量消息(请求)后,其他服务就可以按照自身的需要从容地对MQ中的消息进行消费,而不必直接去处理大量请求(短时间内的大量请求在横轴为时间、纵轴为请求量的图上就是峰顶)。

MQ劣势

  • 如果使用MQ的话,MQ就属于系统引入的外部依赖,一旦MQ宕机,就会对业务造成影响。

2. RabbitMQ简介

AMQP(Advanced Message Queuing Protocol,高级消息队列协议),是一个网络协议,同时也是一个应用协议的开放标准,专为面向消息的中间件而设计。RabbitMQ是基于AMQP并使用Erlang语言开发的消息中间件,在安装RabbitMQ时如果没有安装Erlang的话,需要根据提示下载并安装Erlang。当前有多种语言都有对应的插件来支持RabbitMQ的使用,包括Java、Python、Ruby等,本文主要介绍通过Python操作RabbitMQ。

RabbitMQ相关概念

  • Broker:接收和分发消息的应用,RabbitMQ Server就是Message Broker。
  • Virtual host:出于多租户和安全因素的设计,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念,当多个不同的用户使用同一个RabbitMQ Server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等。
  • Connection:publisher/consumer和broker之间的TCP连接。
  • Channel:如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销都将是巨大的,效率也是非常低的。Channel是在Connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread会创建单独的Channel进行通信,AMQP的method包含了channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。Channel作为轻量级的Connection,极大减少了操作系统建立TCP连接的开销。

相关术语

  • producer:生产者,向队列中发送消息的程序。(在图表中通常使用P表示)
  • queue:队列,用于存储消息,定义在RabbitMQ内部,queue本质上是一个消息缓存buffer,生产者可以往里发送消息,消费者也可以从里面获取消息。(在图表中通常使用Q表示)
  • consumer:消费者,等待并从消息队列中获取消息的程序。(在图表中通常使用C表示)
  • exchange:交换机,用于将producer发送来的消息发送到queue,事实上,producer是不能直接将message发送到queue,必须先发送到exchange,再由exchange发送到queue。(在图表中通常使用X表示)
  • 注:生产者和消费者可能在不同的程序或主机中,当然也有可能一个程序有可能既是生产者,也是消费者。

Windows上RabbitMQ安装

在 https://rabbitmq.com/install-windows.html 上找到 Direct Downloads 下的exe安装文件并下载即可,安装过程中可能会提示你下载Erlang,按提示打开网站下载安装即可 https://www.erlang.org/downloads ,下载文件如 OTP 24.0 Windows 64-bit Binary File 。 都安装好后执行以下命令创建用户:

  • 在命令窗口cd到RabbitMQ安装目录的 RabbitMQ Server\rabbitmq_server-3.8.17\sbin 。
  • 安装RabbitMQ网页插件: rabbitmq-plugins.bat enable rabbitmq_management 。
  • 新建用户: rabbitmqctl.bat add_user admin 123456 。(此处用户名和密码自己设置即可)
  • 设置管理员: rabbitmqctl.bat set_user_tags admin administrator 。 (将刚才新建的用户设置为管理员身份)
  • 设置用户权限: rabbitmqctl.bat set_permissions -p / dj123 “." ".” “.*” 。
  • 停止和启动RabbitMQ服务: net stop RabbitMQ && net start RabbitMQ 。(安装RabbitMQ后会自动启动服务,所以这一步也可以不用执行)
  • 使用网页插件查看RabbitMQ相关信息:直接访问 http://localhost:15672/ ,并输入刚才创建的用户和密码即可。(这一步正常访问网页,则表示RabbitMQ安装成功了)
  • 注:RabbitMQ安装成功后,就可以使用Python程序(或其他语言程序)通过RabbitMQ服务发送和接收消息了。
posted @ 2024-10-31 15:46  A汉克先生  阅读(60)  评论(0编辑  收藏  举报