Este tema describe la definición, la relación del modelo, los atributos internos, las restricciones de comportamiento y las notas de uso de los mensajes en ApsaraMQ for RocketMQ.
Definición
Un mensaje es la unidad mínima de transmisión de datos en ApsaraMQ for RocketMQ. Un producer encapsula la carga útil y los atributos extendidos de los datos de negocio en un mensaje, y lo envía a un broker de ApsaraMQ for RocketMQ. Después, el broker entrega el mensaje a un consumer según la semántica correspondiente.
El modelo de mensajes de ApsaraMQ for RocketMQ cuenta con las siguientes características:
-
Inmutabilidad
Un mensaje es un evento generado. Una vez que se genera, su contenido no cambia. Incluso si el mensaje atraviesa un canal de transmisión, su contenido permanece igual. Los mensajes que obtienen los consumers son de solo lectura.
-
Persistencia
De forma predeterminada, ApsaraMQ for RocketMQ persiste los mensajes al almacenarlos en archivos dentro del broker de ApsaraMQ for RocketMQ. Esto garantiza que los mensajes se puedan rastrear y recuperar si ocurre una falla en el sistema.
Relación del modelo
La siguiente figura muestra la posición de los mensajes en el modelo de dominio de ApsaraMQ for RocketMQ.
Los producers inicializan los mensajes y los envían al broker de ApsaraMQ for RocketMQ.
Los mensajes se almacenan en colas en el orden en que el broker de ApsaraMQ for RocketMQ los recibe.
Los consumers obtienen y consumen los mensajes del broker de ApsaraMQ for RocketMQ de acuerdo con sus relaciones de suscripción.
Atributos internos
Atributos del sistema
Nombre del topic
Nombre del lite topic
Tipo de mensaje
Cola de mensajes
Desplazamiento del mensaje
ID del mensaje
(Opcional) Lista de claves de índice
(Opcional) Etiqueta de filtro
(Opcional) Hora programada
Hora de envío del mensaje
Marca de tiempo de retención del mensaje
Número de reintentos de consumo
Atributos personalizados de los mensajes
Atributos personalizados
Carga del mensaje
Carga del mensaje
Restricciones de comportamiento
El tamaño de un mensaje no puede superar el límite máximo. Si el tamaño de un mensaje excede dicho límite, el envío falla.
A continuación se muestran los tamaños máximos predeterminados de los mensajes:
Mensajes normales y ordenados: 4 MB
Mensajes transaccionales, programados y con retraso: 64 KB
Notas de uso
No se recomienda sobrecargar la transmisión de un solo mensaje.
Como middleware de mensajería, ApsaraMQ for RocketMQ está diseñado para transmitir datos de eventos de negocio. Se recomienda controlar el tamaño de los datos de cada mensaje. Un mensaje demasiado grande incrementa la carga en la capa de transporte de la red y dificulta el funcionamiento de funciones como los reintentos y la regulación de tráfico.
Si necesita realizar transmisiones sobrecargadas en el entorno de producción, se recomienda dividir el mensaje con base en un tamaño fijo o utilizar un método de almacenamiento de archivos.
Inmutabilidad de los mensajes
En los brokers de ApsaraMQ for RocketMQ 5.x, los mensajes son inmutables. Los consumers obtienen vistas de mensajes de solo lectura.
Dado que las versiones 3.x y 4.x no tienen restricciones de inmutabilidad, debe reinicializar los mensajes si desea reenviarlos.
-
Ejemplo correcto:
Message m = Consumer.receive(); Message m2= MessageBuilder.buildFrom(m); Producer.send(m2); -
Ejemplo incorrecto:
Message m = Consumer.receive(); m.update(); Producer.send(m);