python 连接操作rabbitMQ 主要是使用pika库

安装:

pip install pika==1.0.1

注意: pika 1.x 与 pika 0.x 有一些不同,使用的时候需要看清版本使用,避免踩坑

Pika是用于Python的RabbitMQ(AMQP 0-9-1)客户端库

注: 官方对于pika有如下介绍:

Since threads aren’t appropriate to every situation, it doesn’t require threads. 
Pika core takes care not to forbid them, either. 
The same goes for greenlets, callbacks, continuations, and generators.
 An instance of Pika’s built-in  connection adapters isn’t thread-safe, however.

线程并不适用于每种场景, 因此并不要求使用线程。 但是pika并不禁用线程, 对于

greenlets, callbacks也一样。 一个pika建立的连接并不是线程安全的

因此在多线程中共享一个pika连接不是线程安全的, 当然也有一种使用:

with one exception: you may call the connection method add_callback_threadsafe from
 another thread to schedule a callback within an active pika connection.

使用add_callback_threadsafe方法callback 一个pika连接从另外一个线程中

pika提供建立连接方式:

pika.adapters.asyncio_connection.AsyncioConnection - 用于python 3 AsyncIO的I/O异步模式
pika.BlockingConnection - 同步模式, 简单易用
pika.SelectConnection - 没有第三方依赖包的异步模式
pika.adapters.tornado_connection.TornadoConnection - 基于Tornado 的异步IO请求模式
pika.adapters.twisted_connection.TwistedProtocolConnection - 基于Twisted’的异步IO请求模式

例子:

  1. 生产者

    
    #!/usr/bin/env python
    # **********生产数据************
    import pikaauth = pika.PlainCredentials('guid','guid')
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='*',port=5672,virtual_host='/',credentials=auth))
    channel = connection.channel()channel.queue_declare(queue='TEST01')channel.basic_publish(exchange='',routing_key='TEST01333',body='Hello World!')
    print(" [x] Sent 'Hello World!'")
    connection.close()
  2. 消费者
    #!/usr/bin/env python
    # **********消费数据************
    import pikaauth = pika.PlainCredentials('wangying','Ja21s11o07n')
    connection = pika.BlockingConnection(pika.ConnectionParameters(host='123.56.203.32',port=5672,virtual_host='/',credentials=auth))
    channel = connection.channel()channel.queue_declare(queue='TEST01')def callback(ch, method, properties, body):print(" [x] Received %r" % body)channel.basic_consume(on_message_callback=callback,queue='TEST01',auto_ack=True)print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()

    备注:

  • 错误:pika.exceptions.ProbableAuthenticationError: ConnectionClosedByBroker: (403) 'ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.'
    这个错误的原因就是在连接时没有传主机和账户用户名,

    connection = pika.BlockingConnection(pika.ConnectionParameters(host='*',port=5672))需要改为connection = pika.BlockingConnection(pika.ConnectionParameters(host='*',port=5672,virtual_host='/',credentials=auth))就是网上大部分都是没有传虚拟主机和用户名的问题
  • 错误:connection_configs does not support iteration: TypeError("'Blocki login was refused using authentication mechanism plain
    这个问题找了半天,最后发现是由于防火墙的问题,我把防火墙给关闭后还不行,最后重启了下服务器可以了,可能是关闭防火墙后由于cdn问题导致的没有生效。
    解决方法:出入站添加端口5672的出入站规则和15672的出入站规则,这样就可以远程访问和远程连接了

python使用pika操作rabbitmq总结相关推荐

  1. python使用pika操作rabbitmq总结(一)

    python 连接操作rabbitMQ 主要是使用pika库 安装: pip install pika==1.0.1 注意: pika 1.x 与 pika 0.x 有一些不同,使用的时候需要看清版本 ...

  2. python总线 rabbitmq_python - 操作RabbitMQ

    介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应 ...

  3. python使用pika订阅rabbitmq消息链接被重置问题

    最近在做一个运维监控系统的时候,使用python的pika插件订阅rabbitmq消息,程序在运行一段时间后,总是会报链接被充值的错误,具体报错如下: Traceback (most recent c ...

  4. python安装pika模块rabbitmq

    1.pip install pika 2.如找不到 拷贝 D:\python\testmq\venv\Lib\site-packages  \pika目录 转载于:https://www.cnblog ...

  5. python 使用pika对接rabbitMQ

    1.简易阐述原理 原则上,消息,只能有交换机传到队列,就像我们家里面的交换机道理一样. 有多个设备连接到交换机,那么,这个交换机把消息发给那个设备呢,就是根据交换机的类型来定.类型有:direct\t ...

  6. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  7. Python之操作RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

  8. python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue)的开源实现的产品,RabbitMQ是一个消息代理,从"生产者" ...

  9. Python菜鸟之路:Python基础-Python操作RabbitMQ

    RabbitMQ简介 rabbitmq中文翻译的话,主要还是mq字母上:Message Queue,即消息队列的意思.rabbitmq服务类似于mysql.apache服务,只是提供的功能不一样.ra ...

最新文章

  1. 【虚拟化实战】容灾设计之三Stretched Cluster
  2. int(*p)[]和int(**p)[]
  3. java 获取六个月账期,应收帐龄分析里面账期分析能不能改为0-30天?
  4. c 语言 结构体 编程,C语言:结构体的编程问题(很简单)
  5. MySQL怎么查游戏内邮件附件_怎么查询游戏mysql账号密码
  6. simulink中if模块_Simulink与圈复杂度
  7. 天瑞地安科技集团:APP软件如何优化
  8. 使用c#制作赛尔号登录器
  9. arcgis oracle数据库失败,Oracle数据库之[ArcGIS]Oracle RAC下创建地理数据库失败的解决方法...
  10. Arduino+nRF24L01无线遥控舵机和电机
  11. 从头学计量-SPSS攻克常见信度检验1
  12. python读取excel合并单元_python读取excel合并方法
  13. 【电脑配置图】i3-10100f+1650显卡(2020.11.28)了解
  14. 8. SpringBoot基础学习笔记
  15. 表达式计算器 java代码_Java实现简单的表达式计算器功能示例
  16. TP5 入口文件提到根目录
  17. 拉扎维模集英文原版阅读笔记1
  18. 使用freekan源码搭建本地视频网站,并发布公网访问
  19. 教学资源管理软件PHP,应用ThinkPHP框架的教学资源科研管理平台设计研究
  20. excel合并多工作簿同名工作表?

热门文章

  1. 大数据技术与应用-D1
  2. 瑞吉外卖笔记——第03讲Linux软件安装jdk、MySQL、Tomcat和Maven
  3. golang求多边形相交面积
  4. PHP数据库操作类ADODB 详解
  5. linux--线程(2续)
  6. 【小组作业】电影院管理系统
  7. 《Groovy官方教程》Grape依赖管理器
  8. c语言程序个人实验报告,C语言程序设计实验报告(5)
  9. ffmpeg 设定码率
  10. 座标转换:TWD67-TWD97