Ответ 1
-
Теоретически все может быть сохранено/отправлено в виде сообщения. Вы фактически не хотите хранить что-либо в очередях. Система работает наиболее эффективно, если очереди остаются пустыми большую часть времени. Вы можете отправить все, что хотите в очередь, с двумя предварительными условиями:
- Вещь, которую вы отправляете, может быть преобразована в и из байта
- Потребитель точно знает, что он получает и как преобразовать его в исходный объект
Строки довольно просты, у них встроенный метод преобразования в байты и из них. Если вы знаете, что это строка, вы знаете, как ее вернуть. Лучше всего использовать строку разметки, такую как XML, JSON или YML. Таким образом вы можете конвертировать объекты в строки и обратно к исходным объектам; они работают на всех языках программирования, поэтому ваш потребитель может быть написан на другом языке для вашего продюсера, если он знает, как понимать объект. Я работаю на Java. Я хочу отправить сложные сообщения с под-объектами в полях. Я использую свой собственный объект сообщения. Объект сообщения имеет два дополнительных метода
toBytes
иfromBytes
, которые преобразуются в и из байтового потока. Я использую ключи маршрутизации, которые не оставляют сомнений относительно того, какой тип сообщения получает потребитель. Сообщение является Serializable. Это прекрасно работает, но ограничивается, поскольку я могу использовать его только с другими программами Java. -
Размер сообщения ограничен памятью на сервере, и если он постоянный, то также и свободное место на жестком диске. Вероятно, вы не хотите отправлять слишком большие сообщения; лучше было бы отправить ссылку на файл или базу данных.
Вы также можете ознакомиться с их показателями эффективности: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/
-
Очереди довольно легкие, вы, скорее всего, будете ограничены количеством подключений. Вероятно, это будет зависеть от сервера. Вот некоторая информация по близкому вопросу: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html