问题是这样的:客户端需要在五个不同的消息队里中发送消息,服务端在五个队列中收到消息后调用不同的函数。
我在服务端中声明了同时声明了五个队列,但是在主线程中同时监听该五个队列时,其余的四个队列被阻塞,只能监听一个队列。
于是我使用多线程 让每个线程监听一个队列:
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()
但是却报下面的错:
请问有什么正确的方法可以解决?!