Відповіді:
Теоретично все можна зберігати / надсилати як повідомлення. Ви насправді не хочете нічого зберігати у чергах. Система працює найефективніше, якщо черги порожні велику частину часу. Ви можете надіслати все, що завгодно, до черги з двома передумовами:
Рядки досить прості, у них є вбудований метод перетворення в байти і з нього. Якщо ви знаєте, що це рядок, то ви знаєте, як її перетворити назад. Найкращий варіант - використовувати рядок розмітки, наприклад XML, JSON або YML. Таким чином ви можете перетворити об'єкти в Strings і знову повернутися в оригінальні об'єкти; вони працюють на різних мовах програмування, тому ваш споживач може писати іншою мовою для вашого виробника, якщо він знає, як зрозуміти об'єкт. Я працюю на 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-measurement-part-2 /
Черги мають досить малу вагу, швидше за все, ви будете обмежені кількістю підключень. Це залежатиме від сервера, швидше за все. Ось інформація про подібне питання: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html
Максимальний розмір повідомлення в 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
Дивіться відповідь robthewolf .
Максимальний розмір повідомлення - 2 Гб, проте налаштування продуктивності для повідомлень такого розміру не є ефективною. Максимальний розмір повідомлення
Програмне забезпечення RabbitMQ Server не має жорстких обмежень щодо кількості черг, однак обладнання, на якому працює сервер, може дуже добре вплинути на цю межу.
3а. Не встановлено обмеження довжини черги, встановлене сервером за замовчуванням. Однак ви можете обмежити це за допомогою політики (конфігурації) на стороні сервера або політики клієнта. Максимальна довжина черги
Більше інформації та посилань на пов’язану публікацію .