Python3模块pika连接RabbitMQ消息队列(代码自用)

Python下使用pika简单实现RabbitMQ通信 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。 现在介绍一下基本的RabbitMQ的通信过程: RabbitMQ基本的通信模型是这样的,它类似于C-S通信模型,它包含一个producer (生产者),queue(消息队列)和一个consumer(消费者),生产者发送的消息只会存储在中间的消息队列中: 阅读详情

原理

  • 消息队列(Message Queue):在消息的传输过程中保存消息的容器
  • RabbitMQ:实现了高级消息队列协议(AMQP)的开源消息代理软件

消息队列

AMPQ

RabbitMQ

Python连接RabbitMQ

pika安装

pip install pika

生产者

import pika

# 参数
USERNAME = '用户名'
PASSWORD = '密码'
VIRTUAL_HOST = ''
HOST = ''
PORT = 5672
QUEUE = '队列名'


def basic_publish(exchange, routing_key, body):
    # 创建消息队列连接器
    connection = pika.BlockingConnection(
        pika.ConnectionParameters(HOST, PORT, VIRTUAL_HOST, pika.PlainCredentials(USERNAME, PASSWORD)))
    channel = connection.channel()
    # 写数据
    channel.basic_publish(exchange, routing_key, body)

消费者

import pika

# 参数
USERNAME = '用户名'
PASSWORD = '密码'
VIRTUAL_HOST = ''
HOST = ''
PORT = 5672
QUEUE = '队列名'

# 创建消息队列连接器
credentials = pika.PlainCredentials(USERNAME, PASSWORD)
connection = pika.BlockingConnection(pika.ConnectionParameters(HOST, PORT, VIRTUAL_HOST, credentials))
channel = connection.channel()

if __name__ == '__main__':
    # 读数据不消费
    from json import loads
    channel.basic_consume(QUEUE, lambda a, b, c, d: print(loads(d)))
    channel.start_consuming()

封装自用

import pika
from json import loads


class Q:
    USERNAME = '用户名'
    PASSWORD = '密码'
    VIRTUAL_HOST = ''
    HOST = ''
    PORT = 5672


class QUEUE:
    """队列名称"""
    queue0 = '队列0'
    queue1 = '队列1'
    queue2 = '队列2'


class Mq(QUEUE):
    def __init__(self, q=Q):
        credentials = pika.PlainCredentials(q.USERNAME, q.PASSWORD)
        parameters = pika.ConnectionParameters(q.HOST, q.PORT, q.VIRTUAL_HOST, credentials, heartbeat=0)
        self.connection = pika.BlockingConnection(parameters)
        self.channel = self.connection.channel()

    def basic_consume(self, queue, func=lambda a, b, c, d: print(loads(d))):
        """消费数据(默认不消费)"""
        self.channel.basic_consume(queue, func)
        self.channel.start_consuming()

    def consume(self, queue, func=print):
        """消费数据(默认不报错则消费)"""
        def _func(ch, method, properties, body):
            func(loads(body))
            ch.basic_ack(delivery_tag=method.delivery_tag)  # 不报错则消费
        self.basic_consume(queue, _func)

    def queue_declare(self, queue):
        """声明队列"""
        self.channel.queue_declare(queue)
        print('declare queue:', queue)

    def queue_delete(self, queue):
        """删除队列"""
        self.channel.queue_delete(queue)
        print('delete queue:', queue)

    def basic_publish(self, queue, body):
        """生产数据"""
        self.channel.basic_publish(exchange='', routing_key=queue, body=body)


if __name__ == '__main__':
    Mq().basic_consume(QUEUE.queue0, func=lambda a, b, c, d: print(d))

多线程

def multiprocess(functions):
    from multiprocessing import Process
    pool = [Process(target=f) for f in functions]
    for p in pool:
        p.start()
    for p in pool:
        p.join()


def multithreading(functions):
    from threading import Thread
    pool = [Thread(target=f) for f in functions]
    for p in pool:
        p.start()
    for p in pool:
        p.join()


def _f():
    print(0)
    from time import sleep
    sleep(1.5)
    print(1)


if __name__ == '__main__':
    multithreading([_f, _f])
    # multiprocess([_f, _f])
使用Python实现RabbitMQ消息队列技术指南 在现代软件开发中,消息队列是一种异步通信机制,允许不同组件之间进行解耦、异步处理和分布式部署。通过消息队列,系统能够提高并发处理能力,平衡负载,并提供高可用性和伸缩性。消息队列通过将消息存放在队列中,使得消息的发送者无需等待接收者立即处理消息,从而优化了系统的整体性能。RabbitMQ 是一种流行的开源消息代理(Message Broker),它实现了高级消息队列协议(AMQP)。它支持多种消息传递模式,包括点对点和发布/订阅,并提供了可靠的消息传递和高可用性。 阅读详情

相关推荐

知识导航神器:Obsidian Breadcrumbs 插件全攻略

Parent: 插件Child: Breadcrumbs 用法这样,它就能识别出你和其他笔记的关系。

m0_73735578的博客 1630

python使用pika获取rabbitmq中指定队列的数量

【代码】python使用pika获取rabbitmq中指定队列的数量。

qq_42717671的博客 870

Boost变换电路在新能源车充电系统中的创新应用与挑战

本文探讨了Boost变换电路在新能源车充电系统中的创新应用与挑战,重点分析了其在高压快充、能量回收等场景中的技术突破。通过电力电子仿真和新型器件应用,如SiC MOSFET,显著提升了功率密度和转换效率。同时,文章还深入讨论了电磁兼容性(EMC)挑战及智能控制算法的实际应用,为新能源车充电系统的优化提供了实用解决方案。

7z8x2c4v6b9的博客 219

python框架pika的基本使用

Python操作RabbitMq:pika--队列)安装使用其他读取方法 安装 pip install pika 使用 import pika # 建立连接 # user:账号 pwd:密码 userx = pika.PlainCredentials(user, pwd) # hosh:rabbitmq所在的ip port: 端口号 parameters = pika.ConnectionParameters(host, int(port), '/', credentials=userx) conn = p

qq_44985692的博客 4917

Windows 10下三菱PLC控件安装报错Error Number:-119的终极解决方案(附详细步骤)

本文针对Windows 10系统安装三菱PLC控件时常见的Error Number:-119报错,提供了深度分析与终极解决方案。文章剖析了该错误源于oleaut32.dll文件版本冲突,并详细介绍了通过设置兼容性模式、手动注册DLL、直接安装MX Component以及高级系统修复等多种方法,帮助用户彻底解决此安装难题,顺利搭建PLC开发环境。

weixin_29289821的博客 339

从硬件到软件:TSMaster报文过滤全链路配置指南(含同星设备适配)

本文详细介绍了TSMaster平台下CAN/LIN/FlexRay总线的报文过滤全链路配置指南,特别针对同星TC1016等硬件的兼容性进行实战演示。从硬件层预过滤到软件层可编程过滤,提供五维过滤体系构建方法,帮助工程师提升车载诊断与总线分析效率。重点解析混合总线过滤策略优化及诊断场景下的特殊过滤方案。

tensorflowjs6的博客 403

关于python中pika模块的问题

工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一下关于这个模块我在使用过程的改变历程已经中间碰到一些问题 的解决方法 刚开写代码的小菜鸟 在最开始使用这个rabbitmq的时候,因为本身业务需求,我的程序既需要从rabbitmq消费消息,也需要给rabbitmq发布消息,代码的逻辑图为如下: 下面是我的模拟代码: #! /usr/bin/env python3 #...

奇华资料的博客 975

从 Classic ABAP 到 ABAP Cloud:一份面向开发者的 SAP 学习路线图与实战指南

ABAP技术演进路线:从语法到架构思维 本文系统梳理了现代ABAP开发者的能力成长路径。在S/4HANA与云时代,ABAP已从传统过程式语言转变为支持面向对象、测试驱动和云原生开发的现代技术栈。学习路线应围绕四大核心维度展开:1) 语言基础(ABAP OO/Modern ABAP);2) 工程化实践(ABAP Unit/ATC/Clean ABAP);3) 数据建模(CDS/AMDP);4) 服务化架构(Gateway/OData/Fiori)。文章强调以交付形态倒推技术栈,通过真实案例展示了如何将零散技术

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 363

python使用pika操作rabbitmq

一、概述 python 连接操作rabbitMQ 主要是使用pika库 pip3 install pika==1.1.0 官方对于pika有如下介绍 Since threads aren’t appropriate to every situation, it doesn’t require threads. Pika core takes care not...

shykevin的博客 2283

还原 Windows 环境变量的默认值

有时候,我们可能需要还原环境变量的默认值,以修复可能的配置问题或恢复系统的正常运行。如果您只想还原某个特定的环境变量,可以跳过删除其他变量的步骤,仅删除需要还原的变量即可。在“环境变量”对话框中,继续向下滚动到“系统变量”部分。请注意,在执行以下步骤之前,您应该备份当前的环境变量设置,以便在需要时可以还原。在删除所有需要还原的环境变量后,点击“确定”按钮关闭“环境变量”对话框。在“用户变量”部分,选择需要还原的变量,然后点击“删除”按钮。在“高级”选项卡下方的“环境变量”部分,点击“环境变量”按钮。

PvDeveloper的博客 6342

Debezium报错处理系列之二十一:Unable to connect: Communications link failure.The driver has not received any

Debezium报错系列之二十一:Unable to connect: Communications link failure.The driver has not received any。

zhengzaifeidelushang的博客 547

Python3 使用pika操作RabbitMQ

首先安装pika pip insatll pika 其中EX1,KEY1,EX2,KEY2, 分别代表MQ management 界面图中 1 2 3 4位置的参数 import pika import json import datetime args= {'x-dead-letter-exchange':'EX1','x-dead-letter-routing-key':'KEY1'} message = json.dumps(.....) connection = pika...

Damien_J_Scott的博客 542

数据分析案例-基于红米和华为手机的用户评论分析

在智能手机市场日益繁荣的今天,红米与华为手机作为国产手机品牌的佼佼者,凭借其各自独特的品牌魅力和技术实力,赢得了广泛的用户群体和高度关注。随着技术的不断进步和消费者需求的日益多样化,用户对手机的期望已不仅限于基本的通讯功能,更涵盖了性能、拍照、续航、用户体验等多个方面。因此,深入探究红米与华为手机在用户长期使用过程中的实际表现,尤其是用户评论中所反映出的真实反馈,对于理解市场需求、优化产品设计及提升用户体验具有重要意义。本实验的背景正是基于这样的市场环境和技术发展趋势。我们旨在通过收集并分析红米与华为手机的

m0_64336780的博客 1万+

「消息队列」Python使用pika的优化: 多消费者复用一个连接

通过消息队列可以非常方便的实现分布式, 上篇文章使用Python的pika搭建的"生产者-消费者"模型就是很好的例子,但经过一段时间的运行, 有两个问题令我疑惑, 下面拿出来简单谈谈. 问题一: 运行一段时间后, pika会丢失与RabbitMQ的连接. 问题二: 连接建立过多, 资源消耗较严重. AMQP协议规定消息队列有心跳检测机制, 即消息队列的消息代理会设置一个心跳超时时间. 当客户端与消息队列的消息代理建立连接后, 客户端隔一定时间就会发送一个心跳检测包, 如果消息代理

Nxin的小抄本 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python中的pika模块

工作中经常用到rabbitmq,而用的语言主要是python,所以也就经常会用到python中的pika模块,但是这个模块的使用,也给我带了很多问题,这里整理一下关于这个模块我在使用过程的改变历程已经中间碰到一些问题的解决方法 1.刚开写代码的小菜鸟 在最开始使用这个rabbitmq的时候,因为本身业务需求,我的程序既需要从rabbitmq消费消息,也需要给rabbitmq发布消息,代码的逻辑图为...

python学习者的博客 7475

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

使用皮卡(pika)操作RabbitMQ

简介   众所周知,RabbitMQ是一个开源的高性能的消息队列,支持多种开发语言:Java,Python,.Net,C,C++,PHP等多种语言,那么如何通过Python语言调用RabbitMQ呢?Python中pika这个模块提供了完整的调用方法,通过这个包我们可以实现Rabbit的简单模式,交换机模式以及一些特殊的参数。那么我们如何使用pika模块呢,接下来,请看听我慢慢道来。 一、简单模式 生产者 简单模式下,有多个消费者时,采用轮询方式处理消息。 import pika if __name_

Code小学僧的课后笔记 2634

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

「消息队列」Python使用pika操作RabbitMQ

前面几篇文章分别介绍了消息队列, AMQP协议以及RabbitMQ, 本篇文章开始尝试用具体语言操作RabbitMQ来搭建"生产者-消费者"模型. 本篇文章将使用Python语言, 而Python操作RabbitMQ库有很多, 比如pika, amqp以及Celery等, 下面就使用pika库来完成这个任务. 调用方法和参数的含义大多已通过注释给出. 针对消费者的实现, 我提供了两种方式: MQReceiver1通过回调来处理消息, MQReceiver2通过迭代来处理消息. 当Rab

Nxin的小抄本 3990

python实时连接rabbitmq_rabbitmq之python_pika模块连接MQ使用(五)

前言接下来使用python的pika模块连接rabbitmq。环境搭建安装pika模块pip install pika实例介绍先从一个最简单的生产者/消费者说起# send.pyclass SenderClient(object):def __init__(self, username, passwd, host="127.0.0.1", port=5672,queuename='eeg', ex...

weixin_39895096的博客 613

使用python构建httpserver,python+tornado+pika+rabbitmq

一、搭建环境 1.1安装Erlang      RabbitMQ是基于Erlang的,所以首先必须配置Erlang环境。从Erlang的官网 http://www.erlang.org/download.html 下载最新的erlang安装包,我下载的是otp_src_17.4.tar.gz 然后: $ tar xvzf otp_src_17.4.tar.gz $ cd otp_

u011299686的专栏 2380

python连接RabbitMQ

之前用flask写了一个接口,调用的方法不是直接调用,而是用MQ来消费,这里选用了RabbitMQ RabbitMQ的下载与安装这里我就不介绍了,不懂得可以参考下这篇文章:https://blog.youkuaiyun.com/u011709128/article/details/81082331 安装好后 登陆后添加一个新的exchange 创建完 然后添加queue 创建完 ...

wangshu_liang的博客 3939

RabbitMQ python第三方库pika应用入门实践

RabbitMQ python第三方库pika应用入门实践

肖永威的专栏 2376

python使用pika操作rabbitmq编程入门(二)

pika生产者程序大致步骤: 1. 建立连接connection , 需要认证的调用认证参数 2. 创建通道channel 当然 channel可以池化,这样可以重复使用 3. 声明队列 指定队列属性, 一旦指定属性不能修改, 例如是否持久化,名称 4. 声明交换机 交换机类型,名称等, 也可以不用声明,直接使用 “” 空字符串,默认交换机也可以 5. 将队列与交换机绑定 queue_...

comprel的博客 4399

python--使用pika库操作rabbitmq实现需求

有这样业务场景,算法部的同事有一个算法需要集成,有国内和国外两条链路,使用rabbitmq对应的试两个队列,但是他的算法只能开启一个实例,不能开两个进程,否则计算资源不足会崩溃(此处我想吐槽,做算法这帮人,工资又高,结果工程能力太差啦,所谓的算法也不过把github的开源库拿来改改参数,怎么好意思叫算法,搞不懂现在的中国互联网环境了),基于以上原因,需求则是需要在只开一个实力的情况下,消费两个队列里的任务。前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。

WenCoo的博客 2140

使用python连接rabbitmq

使用python连接rabbitmq的时候,需要第三方库 pika pika 的安装 ......@ubunut: ~$ sudo pip3 install pika 此处,创建两个py文件 send.py #!/usr/bin/python3 # send.py import pika # 创建连接 con = pika.BlockingConnection(pika.Conn...

weixin_44313745的博客 1306

pika加载证书连接rabbitmq(5671端口)

def start_consumer(): import jks # 安装pyjks from OpenSSL import crypto # 安装openssl,module好像叫pyopenssl from urllib import quote, urlencode # 密码中特殊字符做quote, url中特殊字符做urlencode username = 'guest' password = quote('guest@password') .

Jalen备忘录 1491

rabbitmq消息队列

使用rabbitmq前需要安装Erlang 1.安装Erlang 下载地址:https://www.erlang.org/downloads 设置环境变量(将安装好的目录添加到系统环境变量中) 检查是否安装成功 在CMD中 像这样的表示已经安装成功。 2.安装rabbitmq 下载地址:http://www.rabbitmq.com/download.html 设置环境变量 j打开CMD,将工作目录切换到D:\rabbitmq\rabbitmq_server-3.8.9\sbin>#这个目录指的是

weixin_52134263的博客 1496
上一篇: NLP算法Python相近词查找
下一篇: Python3网络编程:socket笔记
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值