基于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 各自都能消费到消息

相关推荐
rabbit_pro19 小时前
Java 文件上传到服务器本地存储
java·服务器·python
5***g29819 小时前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
XL's妃妃19 小时前
Java 基准测试工具 JMH 详细介绍
java·开发语言·测试工具
serve the people19 小时前
PQ+IVF组合解决海量向量内存占用高和检索慢的问题
人工智能·python
on_pluto_19 小时前
【debug】解决 5070ti 与 pytorch 版本不兼容的问题
人工智能·pytorch·python
嫂子的姐夫19 小时前
02-多线程
爬虫·python·多线程·并发爬虫·基础爬虫
free-elcmacom19 小时前
MATLAB信号分析:眼图生成与高速系统评估
开发语言·matlab·信号处理
多则惑少则明19 小时前
【算法题4】找出字符串中的最长回文子串(Java版)
java·开发语言·数据结构·算法
【建模先锋】20 小时前
基于Python的智能故障诊断系统 | SmartDiag AI (基础版)V1.0 正式发布!
开发语言·人工智能·python·故障诊断·智能分析平台·大数据分析平台·智能故障诊断系统