Стойкость очереди RabbitMQ в кластере - PullRequest
2 голосов
/ 23 октября 2010

У меня есть вопрос, на который я не могу найти ответ.Я впервые использую RabbitMQ в «большом» приложении, и мне интересно, как работают очереди в кластере.Я понимаю, что информация о маршрутизации (очереди, обмены, привязки) находится на всех узлах кластера, но сама очередь находится на компьютере, на котором она была создана.Я создаю несколько длительных постоянных очередей.Если я записываю постоянные сообщения в очередь на MachineA в кластере, они записываются на диск, затем я записываю сообщения в MachineB, ту же очередь, будут ли они «перенаправлены» на MachineA или они будут записываться на диски MachineB?

Меня беспокоит то, что я буду обрабатывать тысячи сообщений в секунду и не хочу, чтобы скорость дисков была узким местом.Если это на самом деле перенаправит сообщения как-то изнутри, мне придется реализовать какой-то тип шардинга, который отстой :(

Дайте мне знать, ребята:)

1 Ответ

3 голосов
/ 24 октября 2010

Как вы говорите, в кластере RabbitMQ очередь находится только на том узле, на котором она была объявлена.

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

Ключевое слово здесь , в конечном итоге . Любое сообщение (опубликованное как постоянное или временное, в долговременной или недолговечной очереди) может быть сохранено на диске. Постоянное сообщение, публикуемое в долговременную очередь, является лишь убедительным указанием брокеру, что сообщение должно быть записано на диск как можно скорее. Тем не менее, нет никакой гарантии, что сообщение будет записано, поэтому диск обычно не становится узким местом (исключение составляют случаи, когда у вас мало памяти).

Если вы хотите гарантированную доставку, это другой вопрос.

...