首页 > 编程语言 >Python三方库:Pika(RabbitMQ基础使用)

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

时间:2024-10-31 15:43:48浏览次数:3  
标签:Pika Python RabbitMQ queue MQ 消息 安装

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服务发送和接收消息了。

标签:Pika,Python,RabbitMQ,queue,MQ,消息,安装
From: https://www.cnblogs.com/gzhbk/p/18517973

相关文章

  • python变量
    1.变量Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。变量定义规则变量名只能是数字,字母或下划线的任意组合变量名的第一个字符不能是数字保留字即关键字,我们不能把它们用作任何标识符名称。Python的标准库提供了一个keyword......
  • python 自动将歌曲按照歌手分类创建软链接
    要使用Python获取MP3文件的信息,可以使用pymediainfo包。首先,你需要安装pymediainfo。下面是获取一首歌曲信息的例子"""Moduletodemonstratehowtouse`pymediainfo`toreadmetadatafromamediafile.Inthismodule,wereadthemetadataofagivenMP3fileand......
  • rabbitmq - 流量控制
    在helloworld的案例中,如果开启两个Receive,消息被平均发送给了2个Receive。很多情况下,我们并不希望消息平均分配,可以对代码做如下修改。场景:a侦听器处理快,b侦听器处理的慢,我们希望能将更多的消息分配给a。importcn.swsk.springboot.rgyx.jx.test.ConnectionUtil;impor......
  • rabbitmq - ack机制
    疑问:在写demo的时候,如果client被强制中断,消息来不及处理,这时候消息又出队列了,这样不是会产生严重的问题嘛?一个会话中,可以同时处理一批数据,如果一条失败了,之前的也要求回滚的话,要怎么处理?获取一个消息之后,发现程序无法处理这条消息,想要退还回去,该怎么办?方案:这就涉及到队......
  • 西安短期驻场:python+flask/django 1.5万/月可谈
    驻场周期:2个月,不包食宿。地点:西安高新区费用:1.5万/月。可谈python后台开发岗位要求:-本科及以上学历,计算机相关专业,3年以上开发经验。-熟悉Python及其主流框架flask或django。-熟悉数据库设计与优化,如MySQL、Mango等,具备数据库性能调优经验。-熟练使用Git等版本控制工具,具备......
  • Leetcode刷题Python之3165.不包含相邻元素的子序列的最大和
    提示:利用线段树解决不包含相邻元素的子序列最大和问题。文章目录一、题目描述示例二、解题思路1.思路分析2.线段树的状态设计3.线段树的操作三、代码实现代码详细解释四、总结时间复杂度分析一、题目描述给定一个整数数组nums和一个二维数组queries,其中q......
  • Python+Django框架淘宝家用电器销售数据可视化系统作品截图和开题报告参考
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • python安装
    系统:win11安装版本:3.13.0一、检查检查电脑内是否已存在python,打开cmd,指令python或者python-V如果已存在旧版本的python,先删除旧版本二、下载安装程序官网地址下载地址默认下载window环境下的最新版本,可自行选择其他系统和其他版本。三、开始安装1.选择addtoPATH......
  • Python中list列表的所有方法
    Python中list列表的所有方法方法描述返回值list.append()在列表末尾添加指定元素,如果增加的是序列会形成嵌套。无返回,直接修改。list.extend()在列表末尾逐个添加指定序列中的所有元素。无返回,直接修改。list.insert()将对象插入列表指定位置,如果增加的是序列会形成嵌套。无返......
  • Python中str字符串的所有方法
    Python中str字符串的所有方法方法描述返回值str.capitalize()将字符串的第一个字符转换为大写,其余字符转换为小写。返回一个新字符串str.casefold()将字符串转换为小写,并移除所有音调标记。识别的内容比str.lower()多返回一个新字符串str.center()返回指定宽度的新字符串,原字......