基于python 开发调试rabbitmq - 2

基于python 3 pika 调试 openstack rabbitmq

创建工作队列,类比一个大的工作,需要发送多个小任务到队列中,让多个消费者消费

多个任务时,多个消费者消费任务

new_task.py

复制代码
#!/usr/bin/env python
import pika
import sys

credentials = pika.PlainCredentials('openstack', 'servicepasswd')
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='10.146.203.171',virtual_host='/',credentials=credentials))
channel = connection.channel()

channel.queue_declare(queue='task_queue', durable=True)

message = ' '.join(sys.argv[1:]) or "Hello World!"
channel.basic_publish(
    exchange='',
    routing_key='task_queue',
    body=message,
    properties=pika.BasicProperties(
        delivery_mode=pika.DeliveryMode.Persistent
    ))
print(f" [x] Sent {message}")
connection.close()

worker1.py

复制代码
#!/usr/bin/env python
import pika
import time

credentials = pika.PlainCredentials('openstack', 'servicepasswd')
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='10.146.203.171',virtual_host='/',credentials=credentials))
channel = connection.channel()

channel.queue_declare(queue='task_queue', durable=True)
print(' [*] Waiting for messages. To exit press CTRL+C')


def callback(ch, method, properties, body):
    print(f" [x] Received {body.decode()}")
    time.sleep(body.count(b'.'))
    print(" [x] Done")
    ch.basic_ack(delivery_tag=method.delivery_tag)


channel.basic_qos(prefetch_count=1)  #qos  限制,公平分发
channel.basic_consume(queue='task_queue', on_message_callback=callback)

channel.start_consuming()

worker2.py

代码同 复制代码
代码同worker1

当多次执行new_task.py 时,模拟发送了多个任务出去,此时 worker1和worker2 各自都能消费到消息

相关推荐
小小测试开发3 小时前
安装 Python 3.10+
开发语言·人工智能·python
梦想不只是梦与想3 小时前
Python 中的装饰器
python·装饰器
我叫唧唧波4 小时前
Python+AI 全栈学习笔记
人工智能·python·学习
AAA大运重卡何师傅(专跑国道)4 小时前
【无标题】
开发语言·c#
copyer_xyf4 小时前
Python 异常处理
前端·后端·python
XBodhi.5 小时前
Visual Studio C++ 语法错误: 缺少“;”(在“return”的前面)
开发语言·c++·visual studio
麻雀飞吧5 小时前
期货多合约策略目标持仓怎么更新才不乱
python·区块链
Cthy_hy5 小时前
拓扑排序超详解:原理 + Kahn 贪心算法
python·算法·贪心算法
LSssT.5 小时前
【01】Python 机器学习
开发语言·python
为爱停留6 小时前
给智能体装上「刹车」:中断(Interrupts)与人工审批全解析
python