От использования RabbitMQ я требую: производитель создает сообщения, а получатель получает все сообщения, которые публикуются после того, как он впервые подключился к очереди.
Поскольку потребитель хочет использовать все опубликованные сообщения. Поскольку, если к одной очереди подключено более одного потребителя, потребители не получат все сообщения (также см. здесь). Следовательно, потребитель должен создать «эксклюзивную» очередь и подключиться к желаемому обмену. Кроме того, он хочет получать все опубликованные сообщения, даже если он не работает (в будущем). Следовательно, очередь «долговечна». Теперь сценарий выглядит так:
Потребитель C1 создает очередь Q1, которая является эксклюзивной и долговечной. Теперь он не работает в течение некоторого времени, а тем временем другой пользователь C2 пытается подключиться к очереди Q1. C2 будет успешным, поскольку Q1 теперь не имеет подключенного к нему абонента. Итак, C2 подключается к эксклюзивной и надежной очереди. Теперь, если C1 пытается подключиться к очереди Q1, он не может этого сделать, поскольку потребитель C2 уже подписан на очередь Q1.
Как предотвратить такой сценарий?
Надеюсь, на этот раз все ясно.