我有一个线程,它使用pika监听来自rabbitmq的新消息。使用BlockingConnection配置连接后,我开始通过start_consuming消费消息。如何中断启动消耗方法调用,例如,以正常方式停止线程?
答案 0 :(得分:0)
您可以使用consume generator代替start_consuming。
import threading
import pika
class WorkerThread(threading.Thread):
def __init__(self):
super(WorkerThread, self).__init__()
self._is_interrupted = False
def stop(self):
self._is_interrupted = True
def run(self):
connection = pika.BlockingConnection(pika.ConnectionParameters())
channel = connection.channel()
channel.queue_declare("queue")
for message in channel.consume("queue", inactivity_timeout=1):
if self._is_interrupted:
break
if not message:
continue
method, properties, body = message
print(body)
def main():
thread = WorkerThread()
thread.start()
# some main thread activity ...
thread.stop()
thread.join()
if __name__ == "__main__":
main()