2016-02-01 5 views
0

Интересно, существуют ли правила создания отдельной очереди в RabbitMQ и когда несколько? Или это зависит от того, отправлять или не отправлять сообщения в одну очередь или несколько, и технически нет никакой разницы? Должно ли оно зависеть от схемы db, т. Е. Должна ли одна таблица соответствовать одной очереди?Когда я должен использовать одиночную очередь и когда несколько?

ответ

2

Одиночная очередь в RabbitMQ и когда несколько?

Одиночная очередь - очень плохая идея. в конечном итоге вы захотите, чтобы разные типы сообщений проходили через кролик. если у вас только одна очередь, вы в конечном итоге воспроизведете логику того, как решить, какой код должен обрабатывать сообщение, когда RabbitMQ может сделать это для вас с маршрутизацией.

В общем, каждый тип «работы», который должен быть выполнен, представлен сообщением, должен быть его собственной очередью.

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

Или его производителю или не отправлять сообщения в одной очереди или нескольких из них

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

есть исключения из этого правила, как и любой «хорошей идеей» в разработке программного обеспечения, но в целом я считаю, что это правда

Если это зависит от схемы БД

ваша конфигурация RabbitMQ имеет нулевую корреляцию с вашей базой данных. не пытайтесь сопоставить между ними. это будет больно, в лучшем случае.

скорее, посмотрите на поведение.

Какое поведение должно запускать это сообщение? каково конкретное поведение, и какой ключ обмена/маршрутизации должен быть опубликован?

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

...

я бы рекомендовал чтение некоторых книг по RabbitMQ, чтобы получить себе переходящий в правильном направлении с основами как RabbitMQ должно быть использовано, а затем получить в хорошие модели использования и проектирование топологии:

  • RabbitMQ In Action - от нуля, что это такое, почему вы должны использовать его, как он работает и т. Д.Рекомендуется для тех, кто смотрит на RMQ
  • RabbitMQ Layout - понимание того, как RabbitMQ вписывается в различные сценарии, как сказано по рассказам разработчиков решения проблем - это «почему-к» из RMQ проектирования топологии (биржи, очередей и привязок)
  • RabbitMQ Patterns - понимать типы сообщений, маршрутизацию и общие шаблоны использования в системах обмена сообщениями, применительно к RabbitMQ - это основной шаблон «how-to» для применения и топологического проектирования с помощью RMQ
+0

Спасибо. ** производитель не решает, в какие очереди отправляется сообщение. ** он принимает решение, указав имя очереди, не так ли? –

+0

производитель указывает обмен, по которому публикуется сообщение. привязки RabbitMQ между обменом и очередью, используя ключ маршрутизации (если применимо), определяют, в какую очередь отправляется сообщение. 2 исключения: очередь вентиляторов, где ключ маршрутизации не используется и по умолчанию «прямая» очередь, где ключ маршрутизации - это имя целевой очереди. но не используйте прямую очередь по умолчанию. это делает вещи назад, IME –

+0

, а также указывает очередь. –

Смежные вопросы