Todos los productos
Search
Centro de documentos

ApsaraMQ for RocketMQ:Mensajes

Última actualización: Oct 09, 2026

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.消息

  1. Los producers inicializan los mensajes y los envían al broker de ApsaraMQ for RocketMQ.

  2. Los mensajes se almacenan en colas en el orden en que el broker de ApsaraMQ for RocketMQ los recibe.

  3. 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

  • Definición: nombre del topic al que pertenece un mensaje. El nombre del topic es único a nivel global dentro de un clúster. Para obtener más información, consulte Topics.

  • Valor: se obtiene desde la interfaz del SDK.

Nombre del lite topic

  • Definición: nombre del lite topic al que pertenece el mensaje. Si el tipo de topic es Lite, el nombre es único a nivel global dentro de ese topic. Para obtener más información, consulte Lite topic model.

  • Valor: se obtiene desde la interfaz del SDK.

Tipo de mensaje

  • Definición: tipo de un mensaje.

  • Valor: se obtiene desde la interfaz del SDK. ApsaraMQ for RocketMQ admite los siguientes tipos de mensajes:

    • Normal: Normal messages. Un mensaje normal no tiene semántica especial ni se correlaciona con otros mensajes.

    • FIFO: Ordered messages. ApsaraMQ for RocketMQ utiliza un grupo de mensajes (MessageGroup) para especificar el orden de un conjunto de mensajes. De esta forma, se garantiza que los mensajes se entreguen exactamente en el orden en que se enviaron.

    • Delay: Scheduled and delayed messages. Es posible especificar un tiempo de retraso para evitar que un mensaje se entregue inmediatamente después de enviarlo. El mensaje se vuelve visible para los consumers únicamente cuando transcurre el retraso indicado.

    • Transaction: Transactional messages. ApsaraMQ for RocketMQ admite mensajes transaccionales distribuidos. Con esto se garantiza la consistencia transaccional entre las actualizaciones de la base de datos y las llamadas a los mensajes.

    • Lite: mensajes Lite. La función Lite topic model solo está disponible para topics con el tipo de mensaje Lite.

Cola de mensajes

  • Definición: cola donde se almacena el mensaje. Para obtener más información, consulte Message queues.

  • Valor: lo especifica y completa el broker.

Desplazamiento del mensaje

  • Definición: posición del mensaje dentro de su cola. Para obtener más información, consulte Working mechanism.

  • Valor: lo especifica y completa el broker. Valores válidos: de 0 a Long.Max.

ID del mensaje

  • Definición: identificador único de un mensaje. Cada ID de mensaje es único a nivel global dentro del clúster.

  • Valor: lo genera automáticamente el cliente producer. Un ID de mensaje es una cadena de 32 caracteres compuesta por dígitos y letras mayúsculas.

(Opcional) Lista de claves de índice

  • Definición: claves de índice de un mensaje. Establezca estas claves para categorizar los mensajes y recuperarlos rápidamente.

  • Valor: lo define el cliente producer.

(Opcional) Etiqueta de filtro

  • Definición: etiqueta utilizada para filtrar mensajes. Los consumers pueden filtrar los mensajes por etiquetas para recibir únicamente aquellos que tengan las etiquetas especificadas.

  • Valor: lo define el cliente producer.

  • Restricción: solo se puede especificar una etiqueta por mensaje.

(Opcional) Hora programada

  • Definición: en escenarios de entrega programada, corresponde a la marca de tiempo en milisegundos en la que se entrega el mensaje. Para obtener más información, consulte Scheduled and delayed messages.

  • Valor: lo define el producer del mensaje.

  • Restricciones:

    • Las instancias Standard Edition de suscripción y pay-as-you-go, así como las instancias serverless Standard Edition y Professional Edition, admiten un retraso máximo de 7 días.

    • Professional Edition (suscripción y pay-as-you-go) y Platinum Edition admiten un máximo de 40 días.

    Para obtener más información, consulte Quotas and limits.

Hora de envío del mensaje

  • Definición: marca de tiempo local en milisegundos del cliente producer al momento de enviar el mensaje.

  • Valor: lo completa el cliente producer.

  • Nota: el reloj del cliente puede diferir del reloj del broker. La hora de envío del mensaje se basa en el reloj del cliente.

Marca de tiempo de retención del mensaje

  • Definición: marca de tiempo local en milisegundos del broker de ApsaraMQ for RocketMQ al momento de almacenar el mensaje.

    En los mensajes programados y transaccionales, el tiempo de retención del mensaje es la hora del broker que se muestra al consumer cuando el mensaje entra en vigor.

  • Valor: lo completa el broker.

  • Nota: el reloj del cliente puede diferir del reloj del broker. El tiempo de retención del mensaje se basa en el reloj del broker.

Número de reintentos de consumo

  • Definición: cantidad de veces que el broker de ApsaraMQ for RocketMQ reenvía un mensaje después de que falla su consumo. Este número aumenta en 1 tras cada intento de reintento. Para obtener más información, consulte Consumption Retry.

  • Valor: lo marca el broker. El número de reintentos es 0 en el primer intento de consumo. Tras un fallo de consumo, el número de reintentos para el primer reintento es 1.

Atributos personalizados de los mensajes

Atributos personalizados

  • Definición: información extendida que un producer puede personalizar.

  • Valor: lo define el producer del mensaje como pares clave-valor de cadenas de texto.

Carga del mensaje

Carga del mensaje

  • Definición: carga útil de un mensaje de negocio.

  • Valor: el producer lo serializa, lo codifica y lo transmite como una matriz de bytes binarios.

  • Restricciones: para obtener más información, consulte Parameter limits.

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);