python 操作消息队列

简介:

图示

其中P指producer,即生产者;C指consumer,即消费者。中间的红色表示消息队列,实例中表现为HELLO队列。

往队列里插入数据前,查看消息队列

$sudo rabbitmqctl  list_queues
Listing queues ...
celeryev.db53a5e0-1e6a-4f06-a9f7-2c104c4612fb    0
...done.

插入消息队列代码

#in_queue.py

复制代码
#coding=utf8
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

#声明队列,如果消息发送到不存在的队列,rabbitmq会自动清除这些消息
channel.queue_declare(queue='HELLO')

for i in range(10):
    #exchange表示交换器,可以精确的制定消息应发到哪个队列,route_key设置队列的名称,body表示发送的内容
    channel.basic_publish(exchange='', routing_key='HELLO', body='Hello World!' + str(i))
    print " [%d] Sent 'Hello World!'" % i
#关闭连接
connection.close()
复制代码

执行结果

复制代码
$python  in_queue.py
 [0] Sent 'Hello World!'
 [1] Sent 'Hello World!'
 [2] Sent 'Hello World!'
 [3] Sent 'Hello World!'
 [4] Sent 'Hello World!'
 [5] Sent 'Hello World!'
 [6] Sent 'Hello World!'
 [7] Sent 'Hello World!'
 [8] Sent 'Hello World!'
 [9] Sent 'Hello World!'
复制代码

此时查看消息队列

复制代码
$sudo rabbitmqctl  list_queues
Listing queues ...
HELLO    10
celeryev.db53a5e0-1e6a-4f06-a9f7-2c104c4612fb    0
...done.
复制代码

可以看到队列HELLO里面有10条数据。

读取消息队列数据

#out_queue.py

复制代码
#coding=utf8
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()

channel.queue_declare(queue='HELLO')

def callback(ch, method, properties, body):
    print " [x] Received %r" % (body,)

channel.basic_consume(callback, queue='HELLO', no_ack=True)

print ' [*] Waiting for messages. To exit press CTRL+C'
channel.start_consuming()
复制代码

执行结果

复制代码
$python out_queue.py 
 [*] Waiting for messages. To exit press CTRL+C
 [x] Received 'Hello World!0'
 [x] Received 'Hello World!1'
 [x] Received 'Hello World!2'
 [x] Received 'Hello World!3'
 [x] Received 'Hello World!4'
 [x] Received 'Hello World!5'
 [x] Received 'Hello World!6'
 [x] Received 'Hello World!7'
 [x] Received 'Hello World!8'
 [x] Received 'Hello World!9'
复制代码

此时查看消息队列

复制代码
$sudo rabbitmqctl  list_queues
Listing queues ...
HELLO    0
celeryev.db53a5e0-1e6a-4f06-a9f7-2c104c4612fb    0
...done.
复制代码

可以看到队列HELLO中的数据被读走了,条数为0。

 






本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/5774838.html,如需转载请自行联系原作者

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
18天前
|
Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数变换数据。示例代码:导入pandas,定义一个包含'Name'和'Age'列的DataFrame,使用`melt()`转为长格式,再用`pivot()`恢复为宽格式。
26 1
|
1月前
|
SQL 关系型数据库 MySQL
python操作mysql
python操作mysql
|
1月前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
1月前
|
人工智能 机器人 Serverless
【Python】Pandas的一系列经典操作(非常实用)
【Python】Pandas的一系列经典操作(非常实用)
|
11天前
|
SQL 关系型数据库 MySQL
使用Python的pymysql库连接MySQL,执行CRUD操作
使用Python的pymysql库连接MySQL,执行CRUD操作:安装pymysql,然后连接(host='localhost',user='root',password='yourpassword',database='yourdatabase'),创建游标。查询数据示例:`SELECT * FROM yourtable`;插入数据:`INSERT INTO yourtable...`;更新数据:`UPDATE yourtable SET...`;删除数据:`DELETE FROM yourtable WHERE...`。
25 0
|
12天前
|
分布式计算 DataWorks 关系型数据库
MaxCompute产品使用合集之我需要在MaxCompute客户端添加Python第三方包,我该怎么操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
12天前
|
SQL 关系型数据库 MySQL
Python操作mysql数据库
Python操作mysql数据库
|
14天前
|
弹性计算 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之阿里函数计算中出现'python app.py'的错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
24 3
|
15天前
|
存储 人工智能 索引
Python中的嵌套字典访问与操作详解
Python中的嵌套字典访问与操作详解
22 1
|
17天前
|
关系型数据库 MySQL 数据库
Python从入门到精通:2.3.1数据库操作与网络编程:使用Python连接和操作数据库
Python从入门到精通:2.3.1数据库操作与网络编程:使用Python连接和操作数据库