python队列只能一个个读取吗_Python RPC如何实现单个消费者消费多个队列?

问题是这样的:客户端需要在五个不同的消息队里中发送消息,服务端在五个队列中收到消息后调用不同的函数。

我在服务端中声明了同时声明了五个队列,但是在主线程中同时监听该五个队列时,其余的四个队列被阻塞,只能监听一个队列。

于是我使用多线程 让每个线程监听一个队列:

def bind_exchange_to_queue(self,api_name):

self.result = self.channel.queue_declare(queue=self.queue_name.format(api_name))

self.channel.exchange_declare(

exchange=self.exchange_name,

exchange_type='topic',

auto_delete=True,

)

self.channel.queue_bind(

exchange = self.exchange_name,

queue = self.queue_name.format(api_name),

routing_key = self.routing_key.format(api_name)

)

self.channel.basic_consume(self.on_request, queue=self.queue_name.format(api_name))

self.channel.start_consuming()

...

def called(self):

threads = []

for api_name in self.api_name_list:

t = threading.Thread(target=self.bind_exchange_to_queue, args=(api_name,))

t.setDaemon(True) # 设置线程为后台线程

t.start()

threads.append(t)

self.channel.basic_consume(self.on_request,queue=self.queue_name.format(api_name))

self.channel.start_consuming()

t.join()

但是却报下面的错:

请问有什么正确的方法可以解决?!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值