Python 简单使用 RabbitMQ

一、安装

pip install pika

二、推送消息到队列中

执行pythone方法

import pika
import time# 用户名和密码
user_info = pika.PlainCredentials('admin','admin')# 连接服务器上的rabbitMQ服务
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1', 5672, '/', user_info))
# connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))# 创建一个channel
channel = connection.channel()# 如果指定的queue不存在,则会创建一个queue,如果已经存在 则不会做其他动作,官方推荐,每次使用时都可以加上这句
channel.queue_declare(queue='pythone.test')# 推送消息到队列  
# exchange:当前是一个简单模式,所以这里设置为空字符串就可以了。   
# routing_key:指定消息要发送到哪个queue。 
# body:指定要发送的消息。
channel.basic_publish(exchange='',routing_key='pythone.test',body='{}'.format('test xxx'))# 关闭连接
connection.close()

查看rabbitMQ网页后台

执行后我们进入rabbitMQ网页端后台查看pythone.test 队列已经被创建

并且我们执行了三次,此处产生3条数据未被消费,还被压在队列中。

查看队列内消息列表

我们改造一下,将推送消息 放到方法中。

三、封装成生产者、消费者方法

生产者product:

import pika
import time# 用户名和密码
user_info = pika.PlainCredentials('admin','admin')# 连接服务器上的rabbitMQ服务
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1', 5672, '/', user_info))
# connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))# 创建一个channel
channel = connection.channel()# 生产者方法
def product():print("进入生产者方法!")# 如果指定的queue不存在,则会创建一个queue,如果已经存在 则不会做其他动作,官方推荐,每次使用时都可以加上这句channel.queue_declare(queue='pythone.test')# 推送消息到队列  # exchange:当前是一个简单模式,所以这里设置为空字符串就可以了。   # routing_key:指定消息要发送到哪个queue。 # body:指定要发送的消息。channel.basic_publish(exchange='',routing_key='pythone.test',body='{}'.format('test xxx'))# 关闭连接connection.close()if __name__ == '__main__':start_time = time.time()    # 程序开始时间print("========start=========|"+str(start_time))product()end_time = time.time()    # 程序结束时间print("========end===========|"+str(end_time))

消费者consumer:

# 消费者方法
def consumer():print("进入消费者方法!")# 消费队列内的消息# queue:接收指定queue的消息# auto_ack:指定为True,表示消息接收到后自动给消息发送方回复确认,已收到消息# on_message_callback:设置收到消息的回调函数channel.basic_consume(queue='pythone.test', auto_ack=True, on_message_callback=mq_consumer_callback)# 一直处于等待接收消息的状态,如果没收到消息就一直处于阻塞状态,收到消息就调用上面的回调函数channel.start_consuming()# 消费者收到消息调用的回调函数
# channel: 包含channel的一切属性和方法
# method: 包含 consumer_tag, delivery_tag, exchange, redelivered, routing_key
# properties: basic_publish 通过 properties 传入的参数
# body: basic_publish发送的消息
def mq_consumer_callback(ch, method, properties, body):print('消费者收到:{}'.format(body))

TestRabbitMQ.py

import pika
import time# 用户名和密码
user_info = pika.PlainCredentials('admin','admin')# 连接服务器上的rabbitMQ服务
connection = pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1', 5672, '/', user_info))
# connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))# 创建一个channel
channel = connection.channel()# 生产者方法
def product():print("进入生产者方法!")# 如果指定的queue不存在,则会创建一个queue,如果已经存在 则不会做其他动作,官方推荐,每次使用时都可以加上这句channel.queue_declare(queue='pythone.test')# 推送消息到队列  # exchange:当前是一个简单模式,所以这里设置为空字符串就可以了。   # routing_key:指定消息要发送到哪个queue。 # body:指定要发送的消息。channel.basic_publish(exchange='',routing_key='pythone.test',body='{}'.format('test xxx'))# 关闭连接connection.close()# 消费者方法
def consumer():print("进入消费者方法!")# 消费队列内的消息# queue:接收指定queue的消息# auto_ack:指定为True,表示消息接收到后自动给消息发送方回复确认,已收到消息# on_message_callback:设置收到消息的回调函数channel.basic_consume(queue='pythone.test', auto_ack=True, on_message_callback=mq_consumer_callback)# 一直处于等待接收消息的状态,如果没收到消息就一直处于阻塞状态,收到消息就调用上面的回调函数channel.start_consuming()# 消费者收到消息调用的回调函数
# channel: 包含channel的一切属性和方法
# method: 包含 consumer_tag, delivery_tag, exchange, redelivered, routing_key
# properties: basic_publish 通过 properties 传入的参数
# body: basic_publish发送的消息
def mq_consumer_callback(ch, method, properties, body):print('消费者收到:{}'.format(body))if __name__ == '__main__':start_time = time.time()    # 程序开始时间print("========start=========|"+str(start_time))# product()consumer()end_time = time.time()    # 程序结束时间print("========end===========|"+str(end_time))

四、测试验证

我们执行3次product方法,生产3条数据到 队列。

再执行consumer方法,对队列内数据进行消费。

可以看见控制台打印如下:

再查看rabbitMQ网页后台,发现消息已经被正常消费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/788382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTPS、对称/非对称加密、SSL/TLS

问题描述:HTTP的请求和响应都是明文传输,有安全隐患 HTTPS:HTTPS并不是一个单独的协议,是在 TCP 和 HTTP 之间加入了 SSL/TLS 安全协议,使得报文能够加密传输,SSL是TLS的前身,现在使用的大多都…

Taro活动列表中,对某一个活动添加分享按钮

采用data-留下分享链接的拼接参数 1.在item文件中写按钮 openType“share” <ButtonclassName{classes.rowRightShareButton}openType"share"data-share-transfer-id{lastGiftingTransferId}data-share-picture-url{shareUrl}data-share-title{shareTitle}onClic…

【Node】使用Node.js构建简单的静态页面生成器

使用Node.js构建简单的静态页面生成器 在现代的Web开发中&#xff0c;静态网站因其速度快、安全性高而越来越受到开发者的青睐。本文将介绍如何使用Node.js构建一个简单的静态页面生成器&#xff0c;通过这个小项目&#xff0c;你将了解到静态网站生成的基本原理和实现方法。 …

在开源的基础上构建 AI 需要一种全新的应用程序安全方法

人工智能已经从科幻小说中涌现出来&#xff0c;进入了我们的日常生活。 在开源软件&#xff08;OSS&#xff09;模型的支持下&#xff0c;人工智能革命正在加速。这些模型是专为开发 AI 而制作的复杂开源代码包&#xff0c;使组织能够高效、大规模地部署 AI 模型。 虽然大多数…

LLM 的下一站 Mamba,取代 Transformer,虽然在争议

虽然业界大佬对Mamba有点争议&#xff0c;但是直觉而言&#xff0c;Mamba会取代 Transformer 成为LLM的基础模型算法。 1&#xff0c; Mamba 比 Transformer的优点 1.1 处理的序列更长 1.2 比Transformer 更快 1.3 可解释性、可理解性、可控性、可调试性比 Transformer 更强 2…

StreamingT2V文本生成视频多模态大模型,即将开源!

1、前言 Picsart人工智能研究所、德克萨斯大学和SHI实验室的研究人员联合推出了StreamingT2V视频模型。通过文本就能直接生成2分钟、1分钟等不同时间&#xff0c;动作一致、连贯、没有卡顿的高质量视频。 虽然StreamingT2V在视频质量、多元化等还无法与Sora媲美&#xff0c;但…

npm配置项管理

全局模块路径配置 修改配置项 在使用Windows系统时&#xff0c;C盘告急一直被大家所诟病的问题&#xff0c;而nodejs的包管理工具npm默认将全局模块路径设置到了C盘。现要将npm全局模块路径设置到其他位置&#xff0c;减小C盘压力 npm config set prefix "E:\nodejs\no…

【C++第二阶段】文件操作

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 文件操作文件写入流程简单的demo写操作 文件读流程二进制写文件二进制读文件 文件操作 文件写入流程 写文件包括以下几个步骤 1.包含头文件 2.创建流对象 3.打开文件&#xff0…

大数据学习第十二天(hadoop概念)

1、服务器之间数据文件传递 1&#xff09;服务器之间传递数据&#xff0c;依赖ssh协议 2&#xff09;http协议是web网站之间的通讯协议&#xff0c;用户可已通过http网址访问到对应网站数据 3&#xff09;ssh协议是服务器之间&#xff0c;或windos和服务器之间传递的数据的协议…

IP SSL的应用与安装

IP SSL&#xff0c;即互联网协议安全套接字层&#xff0c;它是一种为网络通信提供安全及数据完整性的安全协议。在网络传输过程中&#xff0c;IP SSL可以对数据进行加密&#xff0c;这样即便数据在传输途中被截取&#xff0c;没有相应的解密密钥也无法解读内容。这一过程如同将…

合并两个单链表

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 但行前路&#xff0c;不负韶华&#…

redis的键值基本操作

设置数据 首先设置键值对 删除age&#xff0c;会得到nil&#xff0c;表示这个键已经被删除掉了 判断age键还在不在 查找所有键 查找所有以me结尾的键 删除所有键 redis的键和值都是二进制存储的&#xff0c;所以默认不支持中文。 但是&#xff0c;我们重新登录客户端&#xff…

Unity自定义框架(1)-----------单例模式

前言&#xff1a; Unity作为一款强大的游戏开发引擎&#xff0c;其基础框架的设计对于项目的结构和性能有着重要的影响。其中&#xff0c;单例模式是一种常用的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。 什么是单例模式&#xff1f…

基于深度学习的机场航拍小目标检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;在本博客中介绍了基于YOLOv8/v7/v6/v5的机场航拍小目标检测系统。该系统的核心技术是采用YOLOv8&#xff0c;并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;从而进行性能指标的综合对比。我们详细介绍了国内外在机场航拍小目标检测领域的研究现状、数据集处理…

分布式唯一ID 雪花算法

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 算法具体介绍 雪花算法是 64 位 的二进制&#xff0c;一共包含了四部分&#xff1a; 1位是符号位&#xff0c;也就是最高位&#xff0c;…

大数据实验一,Hadoop安装及使用

目录 一&#xff0e;实验内容 二&#xff0e;实验目的 三&#xff0e;实验过程截图及说明 1、安装SSH&#xff0c;并配置SSH无密码登录 2、配置java环境 3.Hadoop的安装与配置 4、修改四个配置文件&#xff1a; 5、格式化HDFS的NameNode&#xff1a; 6、启动Hadoop 7、…

如何使用极狐GitLab 启用自动备份功能

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了如何极狐GitLab 自…

探索Flutter混淆在提高应用安全性方面的作用

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

四、Mybatis-查询与删除

文章目录 1.查询单条数据2.查询多条记录3.模糊查询4.批量删除 1.查询单条数据 <!-- User getUserById();--><select id"getUserById" resultType"com.mybatis.Bean.User">select * from user where id 3;</select>返回对象可以是 …

kuboard项目前端展示

前端展示 https://www.wu123.com/v/#/k8s-manage/k8s-manage https://www.wu123.com/v/#/k8s-manage/k8s-install 部署kuboard 部署脚本 !/bin/bash #使用方法&#xff1a;sh create.ssh env_name port 例如sh create.sh sandbox 31080&#xff1b; #端口可以依次往后推&am…