Я пытаюсь смоделировать сценарий, в котором я подключаюсь к очереди сообщений, а затем после сбоя сети (в моем случае отключения от VPN) мой процесс пытается повторно подключиться к очереди сообщений в бесконечном цикле while.
Вот мой код, который, кажется, работает так, как я собирался сделать, но проблема в том, что после отключения от VPN этот процесс остается в списке потребителей в «my_queue», а после повторного подключения к VPN создается новый потребитель, так чтоони накапливаются.Как я могу предотвратить это?
import pika
import time
def callback(ch, method, properties, body):
print("Message received.")
while True:
try:
cred = pika.PlainCredentials('my_user', 'my_pass')
connection = pika.BlockingConnection(pika.ConnectionParameters(host='192.168.10.171', port=5672, virtual_host='/', credentials=cred, heartbeat_interval=20, socket_timeout=1))
channel = connection.channel()
channel.queue_declare(queue='my_queue', durable=True)
channel.basic_consume(callback, queue='my_queue', no_ack=True)
print('Connected.')
channel.start_consuming()
except:
print('Lost connection.')
time.sleep(2)
Вот так это выглядит на сервере.На самом деле активен только последний потребитель, но сообщения рассылаются каждому из них.![Consumer list on 'my_queue'](https://i.stack.imgur.com/5Dyl9.png)