Python3 通过 pika 连接 RabbitMQ 的基本用法

简介:

【RabbitMQ 服务器】

1
2
3
4
5
6
# 在 vhosttest 里面有 exchangetest 和 queuetest 通过 rkeytest 绑定
Broker: 192.168.0.xx
virtual host: vhosttest
Exchange: exchangetest 
Queue: queuetest 
Routing key: rkeytest


【Python 环境】

1
2
3
OS: Windows 10
Python: 3.6.3 x64
pika: 0.11.2


【查看队列状态】

1
2
3
4
5
6
7
8
9
# 通过浏览器查看队列状态
http: //192 .168.0.xx:15672 /api/queues/vhosttest/queuetest 
 
# 通过命令行查看队列状态
curl -u user:password http: //192 .168.0.xx:15672 /api/queues/vhosttest/queuetest   |  jq
 
# 通过命令行查看队列长度
curl -s -u user:password http: //192 .168.0.xx:15672 /api/queues/vhosttest/queuetest   | \
     jq  '.backing_queue_status.len'


【send.py】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#encoding: utf-8
#author: walker
#date: 2018-01-31
#summary: 发送方/生产者
 
import  os, sys, time
import  pika
 
def  Main():
     credentials  =  pika.PlainCredentials( "test" "test" )
     parameters  =  pika.ConnectionParameters(host = "192.168.0.xx"
                                             virtual_host = 'vhosttest'
                                             credentials = credentials)
     connection  =  pika.BlockingConnection(parameters)     # 连接 RabbitMQ
 
     channel  =  connection.channel()           # 创建频道
     
     queue  =  channel.queue_declare(queue = 'queuetest' )      # 声明或创建队列
     
     while  True :   # 循环向队列中发送信息
         message  =  time.strftime( '%H:%M:%S' , time.localtime())
         channel.basic_publish(exchange = 'exchangetest' ,  
                                 routing_key = 'rkeytest' ,
                                 body = message)
         
         print ( 'send message: %s'  %   message)     
 
         while  True :   
             # 检查队列,以重新得到消息计数
             queue  =  channel.queue_declare(queue = 'queuetest' , passive = True )     
             messageCount  =  queue.method.message_count
             print ( 'messageCount: %d'  %  messageCount)
             if  messageCount <  100 :
                 break
             time.sleep( 1 )
     
     # 关闭连接
     connection.close()
 
if  __name__  = =  '__main__' :
     Main()


【recv.py】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#encoding: utf-8
#author: walker
#date: 2018-01-31
#summary: 接收方/消费者
 
import  os, sys, time
import  pika
 
# 接收处理消息的回调函数
def  ConsumerCallback (channel, method, properties, body):
     print ( "Received %s"  %  body)
 
 
def  Main():
     credentials  =  pika.PlainCredentials( "test" "test" )
     parameters  =  pika.ConnectionParameters(host = "192.168.0.xx"
                                             virtual_host = 'vhosttest'
                                             credentials = credentials)
     connection  =  pika.BlockingConnection(parameters)     # 连接 RabbitMQ
     
     channel  =  connection.channel()           # 创建频道
     
     queue  =  channel.queue_declare(queue = 'queuetest' )      # 声明或创建队列
     
     # no_ack=True 开启自动确认,不然消费后的消息会一直留在队列里面
     # no_ack = no_manual_ack = auto_ack;不手动应答,开启自动应答模式
     channel.basic_consume(ConsumerCallback, queue = 'queuetest' , no_ack = True )
     print ( 'Wait Message ...' )
     
     channel.start_consuming()
 
if  __name__  = =  '__main__' :
     Main()


【相关阅读】

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/2067244如需转载请自行联系原作者

RQSLT
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
python torch基础用法
本教程系统讲解PyTorch基础,涵盖张量操作、自动求导、神经网络构建、训练流程、GPU加速及模型保存等核心内容,结合代码实例帮助初学者快速掌握深度学习开发基础,是入门PyTorch的实用指南。
550 6
|
5月前
|
Go 调度 Python
Golang协程和Python协程用法上的那些“不一样”
本文对比了 Python 和 Go 语言中协程的区别,重点分析了调度机制和执行方式的不同。Go 的协程(goroutine)由运行时自动调度,启动后立即执行;而 Python 协程需通过 await 显式调度,依赖事件循环。文中通过代码示例展示了两种协程的实际运行效果。
242 7
|
8月前
|
人工智能 数据库连接 API
掌握Python的高级用法:技巧、技术和实用性示例
本文分享了Python的高级用法,包括生成器、装饰器、上下文管理器、元类和并发编程等。生成器通过`yield`实现懒加载序列;装饰器用于增强函数功能,如添加日志或性能分析;上下文管理器借助`with`语句管理资源;元类动态定制类行为;并发编程利用`threading`和`asyncio`库提升任务执行效率。掌握这些高级概念可优化代码质量,解决复杂问题,提高程序性能与可维护性。
188 6
|
9月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
410 14
|
10月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
296 68
|
10月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
10月前
|
SQL 关系型数据库 数据库连接
|
IDE 网络安全 开发工具
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
本文介绍了如何在PyCharm专业版中连接远程服务器并配置远程Python环境解释器,以便在服务器上运行代码。
4871 0
IDE之pycharm:专业版本连接远程服务器代码,并配置远程python环境解释器(亲测OK)。
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`&quot;&quot;&quot;` 或 `&#39;&#39;&#39;`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
1414 2

推荐镜像

更多