Python RabbitMQ 入门 pika

Python RabbitMQ 入门

RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

首先要安装运行 RabbitMQ 服务, (RabbitMQ 依赖于 Erlang 环境, 所以还要装 Erlang), Erlang与RabbitMQ,安装路径都应不含空格符

下载地址: Installing RabbitMQ | RabbitMQ

安装

复制代码
pip install pika

消费者 consumer.py

py 复制代码
import pika

# 创建一个连接
credentials = pika.PlainCredentials('guest', 'guest')
parameters = pika.ConnectionParameters('localhost',
                                       5672,
                                       '/',
                                       credentials)

connection = pika.BlockingConnection(parameters)
channel = connection.channel()
# 声明一个队列, durable=True表示队列持久化
channel.queue_declare(queue='hello', durable=True)


def callback(ch, method, properties, body):
    print("Received message:", body)


channel.basic_consume(queue='hello',  # 指定消费的队列
                      auto_ack=True,  # 自动确认消息
                      on_message_callback=callback)

# 当我们启动消费者时,我们就开启了一个永远不会停止的循环,消费者等待数据并调用回调函数,我们通过捕获KeyboardInterrupt来停止程序
print("Waiting for messages. To exit press CTRL+C")
channel.start_consuming()

生产者 producer.py

py 复制代码
import time

import pika

# 创建一个连接
credentials = pika.PlainCredentials('guest', 'guest')
parameters = pika.ConnectionParameters('localhost',
                                       5672,
                                       '/',
                                       credentials)
connection = pika.BlockingConnection(parameters)
# 创建一个频道
channel = connection.channel()
# 消费者那里已经声明了队列,这里不需要再重复声明
# channel.queue_declare(queue='hello', durable=True)

# 在RabbitMQ中,消息不能直接发送到队列,通常需要需要一个exchange, 这里使用默认的exchange
# exchange用来准确指定我们的消息撒送到哪个queue,queue的名称需要在routing_key中声明
for i in range(100):
    # 发布消息
    channel.basic_publish(exchange='',
                          routing_key='hello',
                          body=f'{i} Hello World!')
    print(f" [x] Sent {i} Hello World!")
    time.sleep(.5)
# 关闭连接
connection.close()

运行结果

GUI管理工具:

RabbitMQ Assistant - RabbitMQ可视化管理与监控工具 (redisant.cn)

启动服务后, 访问 http://localhost:15672/# 也有GUI界面

参考:

相关推荐
2501_9333295521 小时前
媒介宣发技术实践:Infoseek舆情系统的AI中台架构与应用解析
开发语言·人工智能·架构·数据库开发
[J] 一坚1 天前
嵌入式高手C
c语言·开发语言·stm32·单片机·mcu·51单片机·iot
odoo中国1 天前
Odoo 19技术教程 : 如何在 Odoo 19 中创建 Many2one 组件
开发语言·odoo·odoo19·odoo技术·many2one
逻辑驱动的ken1 天前
Java高频面试考点场景题14
java·开发语言·深度学习·面试·职场和发展·求职招聘·春招
茅盾体1 天前
汽车零件订单自动同步系统方案
python
2401_883600251 天前
golang如何理解weak pointer弱引用_golang weak pointer弱引用总结
jvm·数据库·python
FreakStudio1 天前
和做工厂系统的印尼老哥,复刻了一套属于 MicroPython 的包管理系统
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
2301_773553621 天前
mysql如何评估SQL语句的索引开销_mysql性能追踪与分析
jvm·数据库·python
pele1 天前
PHP源码运行受主板供电影响吗_供电相数重要性说明【技巧】
jvm·数据库·python
sinat_383437361 天前
CSS如何实现元素悬浮在页面底部_利用fixed定位与底部间距
jvm·数据库·python