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