Mutex - это кролик - PullRequest
       6

Mutex - это кролик

0 голосов
/ 10 января 2012

Возможно ли иметь мьютекс в очереди RabbitMQ, т. Е. Если клиент читает из очереди, никакой другой клиент не должен читать из очереди.это возможно?

Позвольте мне объяснить мой сценарий:

Два приложения, работающие на двух разных серверах.читая ту же очередь.Но если одно приложение работает и читает сообщения из очереди, другое приложение не должно ничего делать.в случае сбоя или остановки основного приложения другое приложение должно начать чтение из этой очереди.

Это своего рода механизм отработки отказа.Кто-нибудь пробовал это раньше.Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2014

Этот доклад явно объясняет, почему это плохая идея:

http://www.youtube.com/watch?v=XiXZOF6dZuE&feature=share&t=29m55s

из ~ 29 м 55 с

0 голосов
/ 16 января 2012

Пока я искал, решений не найдено ... Простое решение -

  • создайте очередь, назвав ее как очередь блокировки.

  • Чтобы приложение считывало его из очереди, нужно только одно сообщение.

  • Когда приложение запускается на другом сервере, оно будет ожидать сообщения в очереди. итак, если первый выйдет из строя второй

  • один прочитает сообщение и начнет обработку сообщения в нужной очереди, из которой оно должно прочитать.

Мьютекс в очереди, вот и все. Примечание. Этот подход будет работать только в том случае, если в очереди блокировки есть только сообщение. убедитесь, что вы обрабатываете это в своем приложении.

...