Размер и типы сообщений RabbitMQ

  1. какие сообщения могут храниться в очередях RabbitMQ? Только струны? Или я могу выбрать, какой тип я хочу сохранить: int, binary, string и т. д.?
  2. каков максимальный размер одного сообщения?
  3. сколько очередей или обменов можно создать? Или это зависит от мощности сервера?

2 ответов


  1. теоретически все может быть сохранено / отправлено как сообщение. Вы на самом деле не хотите ничего хранить в очередях. Система работает наиболее эффективно, если очереди большую часть времени пусты. Вы можете отправить все, что хотите, в очередь с двумя предварительными условиями:

    • вещь, которую вы отправляете может быть преобразован в bytestring
    • потребитель точно знает, что он получает и как преобразовать его в оригинал объект

    строки довольно просты, у них есть встроенный метод преобразования в байты и из байтов. Если вы знаете, что это строка, вы знаете, как преобразовать ее обратно. Лучший вариант-использовать строку разметки, такую как XML, JSON или YML. Таким образом, вы можете конвертировать объекты в строки и обратно в исходные объекты; они работают на разных языках программирования, поэтому ваш потребитель может быть написан на другом языке для вашего производителя, если он знает, как понять объект. Я работаю на Яве. Я хочу отправлять сложные сообщения с подобъектами в полях. Я использую свой собственный объект message. Объект message имеет два дополнительных метода toBytes и fromBytes которые преобразуются в и из bytestream. Я использую ключи маршрутизации, которые не оставляют сомнений в том, какой тип сообщения получает потребитель. Сообщение Сериализуемо. Это работает нормально, но ограничивает, поскольку я могу использовать его только с другими программами Java.

  2. размер сообщение ограничено памятью на сервере, и если оно постоянно, то также свободное пространство HDD тоже. Вы, вероятно, не хотите отправлять слишком большие сообщения; может быть, лучше отправить ссылку на файл или БД.

    вы также можете прочитать об их производительности меры: 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/

  3. очереди довольно легкие, вы, скорее всего, будете ограничены количеством подключений, которые у вас есть. Скорее всего, это будет зависеть от сервера. Вот некоторая информация о подобном вопрос: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html


  1. посмотреть robthewolf это.

  2. максимальный размер сообщения составляет 2 ГБ, однако настройка производительности для сообщений такого размера не эффективна. Максимальный Размер Сообщения

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

3a. Нет ограничения длины очереди наложено сервером по умолчанию. Однако это можно ограничить с помощью политики на стороне сервера (конфигурация) или политики на стороне клиента. Максимальная Длина Очереди

есть дополнительная информация и ссылки на похожие статьи.