Используйте его для передачи данных JSON - PullRequest
4 голосов
/ 17 сентября 2010

Я пытаюсь использовать RabbitMQ для распределенной системы, которая будет работать примерно так:

  • производитель помещает в очередь отформатированный в JSON список идентификаторов заказа
  • несколько потребителей выходят из этой очереди, выполняют бизнес-логику с этими идентификаторами заказа, и результат (в формате JSON) также помещается обратно в другую очередь
  • из второй очереди, другой потребитель возьмет данные и передаст их вызывающей стороне

Я все еще очень новичок в RabbitMQ, и мне интересно, является ли эта модель правильным подходом, учитывая тот факт, что данные должны возвращаться как можно быстрее (иногда в считанные секунды, максимум 5), поэтому существуют требования времени Кроме того, насколько большим может быть сообщение, передаваемое в очередь? JSON, который производитель получит обратно, будет довольно большим, в зависимости от того, что делает потребитель.

Спасибо за любые идеи!

Ответы [ 2 ]

2 голосов
/ 17 сентября 2010

См. Стр. 47 в этой презентации ( InfoQ ) для отличного сравнения между различными форматами сообщений.

1 голос
/ 17 сентября 2010

В предложенном вами дизайне нет ничего плохого.

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

Общий размер сообщений в RabbitMQ <= 1.8.1 ограниченобъем доступной оперативной памяти.Начиная с 2.0.0, оно ограничено объемом доступного дискового пространства (т.е. кролик будет публиковать сообщения на диск, если ему не хватает памяти).Размеры отдельных сообщений записываются как 32-разрядные целые числа (IIRC), поэтому отдельные сообщения не могут превышать ~ 4 ГБ;если это проблема, рассмотрите возможность сохранения JSON в сетевое хранилище и передачи им некоторого идентификатора в сообщениях.Кроме этого, нет никаких ограничений. </p>

...