Respuestas:
Teóricamente, cualquier cosa puede almacenarse / enviarse como mensaje. En realidad, no desea almacenar nada en las colas. El sistema funciona de manera más eficiente si las colas están vacías la mayor parte del tiempo. Puede enviar todo lo que desee a la cola con dos condiciones previas:
Las cadenas son bastante fáciles, tienen un método incorporado para convertir hacia y desde bytes. Si sabe que es una cadena, entonces sabe cómo volver a convertirla. La mejor opción es utilizar una cadena de marcado como XML, JSON o YML. De esta forma, puede convertir objetos en cadenas y volver a los objetos originales; funcionan en todos los lenguajes de programación para que su consumidor pueda escribir en un lenguaje diferente al de su productor, siempre que sepa cómo entender el objeto. Trabajo en Java. Quiero enviar mensajes complejos con subobjetos en los campos. Utilizo mi propio objeto de mensaje. El objeto de mensaje tiene dos métodos adicionales toBytes
yfromBytes
que se convierten desde y hacia el bytestream. Utilizo claves de enrutamiento que no dejan ninguna duda sobre el tipo de mensaje que recibe el consumidor. El mensaje es serializable. Esto funciona bien, pero es limitante ya que solo puedo usarlo con otros programas Java.
El tamaño del mensaje está limitado por la memoria en el servidor, y si es persistente, también el espacio libre en el disco duro. Probablemente no desee enviar mensajes demasiado grandes; sería mejor enviar una referencia a un archivo o base de datos.
También es posible que desee leer sobre sus medidas de rendimiento: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/ blog / 2012/04/25 / rabbitmq-mediciones-de-rendimiento-parte-2 /
Las colas son bastante livianas, lo más probable es que esté limitado por la cantidad de conexiones que tiene. Dependerá del servidor más probable. Aquí hay información sobre una pregunta similar: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html
El tamaño máximo de mensaje en RabbitMQ era de 2 GiB antes de la versión 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).
Referencia: https://github.com/rabbitmq/rabbitmq-common/blob/v3.7.21/include/rabbit.hrl#L279
Han sido 512 MiB desde la versión 3.8.0:
%% 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).
Referencia: https://github.com/rabbitmq/rabbitmq-common/blob/v3.8.0/include/rabbit.hrl#L238
El tamaño máximo del mensaje es de 2 GB; sin embargo, el ajuste del rendimiento para mensajes de este tamaño no es efectivo. Tamaño máximo de mensaje
No hay un límite estricto impuesto por RabbitMQ Server Software en el número de colas, sin embargo, el hardware en el que se ejecuta el servidor puede afectar este límite.
3a. El servidor no impone ningún límite de longitud de cola de forma predeterminada. Sin embargo, puede limitar esto mediante la política del lado del servidor (configuración) o la política del lado del cliente. Longitud máxima de la cola
Hay más información y enlaces en una publicación relacionada .