我有一个使用pika监听rabbitmq新消息的线程。在使用BlockingConnection配置连接之后,我开始通过start_consuming使用消息。我如何中断开始消费方法调用,例如,以优雅的方式停止线程?
发布于 2017-09-30 00:32:13
您可以使用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()https://stackoverflow.com/questions/32220057
复制相似问题