Розмір та типи повідомлень RabbitMQ


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

Відповіді:


117
  1. Теоретично все можна зберігати / надсилати як повідомлення. Ви насправді не хочете нічого зберігати у чергах. Система працює найефективніше, якщо черги порожні велику частину часу. Ви можете надіслати все, що завгодно, до черги з двома передумовами:

    • Те, що ви надсилаєте, може бути перетворене в тестування та з нього
    • Споживач точно знає, що він отримує, і як перетворити його на оригінальний об’єкт

    Рядки досить прості, у них є вбудований метод перетворення в байти і з нього. Якщо ви знаєте, що це рядок, то ви знаєте, як її перетворити назад. Найкращий варіант - використовувати рядок розмітки, наприклад XML, JSON або YML. Таким чином ви можете перетворити об'єкти в Strings і знову повернутися в оригінальні об'єкти; вони працюють на різних мовах програмування, тому ваш споживач може писати іншою мовою для вашого виробника, якщо він знає, як зрозуміти об'єкт. Я працюю на Java. Я хочу надсилати складні повідомлення з підметами в поля. Я використовую власний об’єкт повідомлення. Об'єкт повідомлення має два додаткові способи toBytesтаfromBytesякі перетворюються на бітестрім та з нього. Я використовую клавіші маршрутизації, які не залишають сумнівів щодо того, який тип повідомлення отримує споживач. Повідомлення є Serializable. Це прекрасно працює, але обмежує, оскільки я можу використовувати його лише для інших програм Java.

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

    Ви також можете ознайомитися з їхніми показниками ефективності: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/ blog / 2012/04/25 / rabbitmq-performance-measurement-part-2 /

  3. Черги мають досить малу вагу, швидше за все, ви будете обмежені кількістю підключень. Це залежатиме від сервера, швидше за все. Ось інформація про подібне питання: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html


9

Максимальний розмір повідомлення в RabbitMQ було 2 Гігабайт до версії 3.8.0:

%% Trying to send a term across a cluster larger than 2^31 bytes will
%% cause the VM to exit with "Absurdly large distribution output data
%% buffer". So we limit the max message size to 2^31 - 10^6 bytes (1MB
%% to allow plenty of leeway for the #basic_message{} and #content{}
%% wrapping the message body).
-define(MAX_MSG_SIZE, 2147383648).

Довідка: https://github.com/rabbitmq/rabbitmq-common/blob/v3.7.21/include/rabbit.hrl#L279

З версії 3.8.0 минуло 512 Мб :

%% Max message size is hard limited to 512 MiB.
%% If user configures a greater rabbit.max_message_size,
%% this value is used instead.
-define(MAX_MSG_SIZE, 536870912).

Довідка: https://github.com/rabbitmq/rabbitmq-common/blob/v3.8.0/include/rabbit.hrl#L238


4
  1. Дивіться відповідь robthewolf .

  2. Максимальний розмір повідомлення - 2 Гб, проте налаштування продуктивності для повідомлень такого розміру не є ефективною. Максимальний розмір повідомлення

  3. Програмне забезпечення RabbitMQ Server не має жорстких обмежень щодо кількості черг, однак обладнання, на якому працює сервер, може дуже добре вплинути на цю межу.

3а. Не встановлено обмеження довжини черги, встановлене сервером за замовчуванням. Однак ви можете обмежити це за допомогою політики (конфігурації) на стороні сервера або політики клієнта. Максимальна довжина черги

Більше інформації та посилань на пов’язану публікацію .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.