博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux qos mq,Pika + RabbitMQ:将basic_qos设置为prefetch = 1仍然会消耗队列中的所有消息...
阅读量:6658 次
发布时间:2019-06-25

本文共 788 字,大约阅读时间需要 2 分钟。

我有一个python工作者客户端,它可以让10个工人分别挂接到一个RabbitMQ队列中。有点像这样:

#!/usr/bin/python

worker_count=10

def mqworker(queue, configurer):

connection = pika.BlockingConnection(pika.ConnectionParameters(host='mqhost'))

channel = connection.channel()

channel.queue_declare(queue=qname, durable=True)

channel.basic_consume(callback,queue=qname,no_ack=False)

channel.basic_qos(prefetch_count=1)

channel.start_consuming()

def callback(ch, method, properties, body):

doSomeWork();

ch.basic_ack(delivery_tag = method.delivery_tag)

if __name__ == '__main__':

for i in range(worker_count):

worker = multiprocessing.Process(target=mqworker)

worker.start()我遇到的问题是,尽管在频道上设置了basic_qos,但第一个开始的工作人员接受了队列中的所有消息,而其他人则坐在那里闲置。我可以在rabbitmq界面看到这一点,即使我将worker_count设置为1并在队列中存储了50条消息,所有50个都进入'未确认'桶,而我预计1会变成未确认,另外49个准备好了。

为什么这不起作用?

转载地址:http://ywqto.baihongyu.com/

你可能感兴趣的文章
待学习整理的知识
查看>>
当我们谈论企业级存储市场时,我们谈论(做)了什么
查看>>
Exception in thread "main" java.lang.NullPointerException空指针异常
查看>>
CentOS7中文语言乱码问题解决
查看>>
HDFS1.0小记
查看>>
ABAP和Java里关于DEFAULT(默认)机制的一些语言特性
查看>>
Kubernetes里的secret最基本的用法
查看>>
四元数运算例子
查看>>
企业级 SpringCloud 教程 (四) 断路器(Hystrix)
查看>>
AJAX入门这一篇就够了
查看>>
【Java】几道常见的秋招面试题
查看>>
Linux监控平台介绍&zabbix监控介绍&安装zabbix&忘记Admin密码如何做
查看>>
华为命令行、文件系统、VRP系统基础
查看>>
python 笔记 之 多线程-继承方式
查看>>
谨慎的覆盖clone(11)
查看>>
并发工具优于wati、notify(69)
查看>>
linux哪家好,亲历Linux学员给你推荐
查看>>
Qt之二维绘图:QGraphicsScene与QPainterPath
查看>>
DevOps产品中的企业项目群模式
查看>>
消息队列
查看>>