Este tema describe la definición, la relación del modelo, los atributos internos, las restricciones de comportamiento, la compatibilidad de versiones y las notas de uso de los temas en ApsaraMQ for RocketMQ.
Definición
En ApsaraMQ for RocketMQ, un tema es un contenedor de nivel superior que transmite y almacena mensajes. Un tema identifica los mensajes que comparten la misma lógica de negocio.
Los temas ofrecen a continuación los siguientes beneficios:
-
Categorización y aislamiento de datos
Cuando diseñe soluciones con ApsaraMQ for RocketMQ, cree distintos temas para gestionar los mensajes de diferentes tipos de negocio. Esta práctica garantiza el aislamiento tanto del almacenamiento como de las suscripciones.
-
Gestión de identidades y permisos
Los mensajes en ApsaraMQ for RocketMQ son anónimos. Utilice un tema para gestionar las identidades y los permisos de los mensajes de una categoría específica.
Relación del modelo
La siguiente figura muestra la posición de un tema dentro del modelo de dominio de ApsaraMQ for RocketMQ.

En ApsaraMQ for RocketMQ, un tema actúa como contenedor de nivel superior para todos los recursos de mensajes. Sin embargo, se trata de un concepto lógico y no del contenedor real de los mensajes.
Un tema se compone de una o más colas que se encargan del almacenamiento de mensajes y del escalado horizontal. Todas las restricciones y configuraciones de atributos de un tema se implementan en el nivel de la cola.
Si un tema es de tipo Lite, puede crear recursos LiteTopic bajo este. De forma predeterminada, cada LiteTopic consta de una sola cola.
Conceptos
Tema
En ApsaraMQ for RocketMQ, un tema es un contenedor de nivel superior que transmite y almacena mensajes. Identifica los mensajes que comparten la misma lógica de negocio y se reconoce de manera única por su nombre de tema.
LiteTopic
Si un tema es de tipo Lite, puede crear elementos LiteTopic bajo este. La combinación del tema y el LiteTopic identifica de forma única el contenedor de almacenamiento de mensajes. De manera predeterminada, cada contenedor de almacenamiento consta de una sola cola.
Atributos internos
Nombre del tema
Colas
Tipo de mensaje
Tiempo de caducidad de LiteTopic
Restricciones de comportamiento
Verificación obligatoria del tipo de mensaje
En ApsaraMQ for RocketMQ 5.x, los tipos de mensajes se gestionan y procesan de forma independiente dentro de los temas. El sistema comprueba el tipo de un mensaje enviado frente al tipo definido para el tema de destino. Si la verificación falla, se rechaza la solicitud de envío y el sistema devuelve una excepción de discrepancia de tipos. Se aplican las siguientes reglas de verificación:
-
Consistencia del tipo de mensaje
El tipo del mensaje enviado debe coincidir con el tipo definido para el tema de destino.
-
Un solo tipo de mensaje por tema
Cada tema admite únicamente un tipo de mensaje. No envíe mensajes de distintos tipos al mismo tema.
Escenarios comunes de uso incorrecto
-
Envío de mensajes con un tipo incompatible
Por ejemplo, si crea un tema y define su tipo de mensaje como ordenado, pero luego envía un mensaje transaccional a ese tema, la solicitud de envío se rechazará y se devolverá una excepción de discrepancia de tipos.
-
Mezcla de tipos de mensajes en un solo tema
Por ejemplo, si crea un tema y define su tipo de mensaje como normal, pero después envía tanto mensajes normales como ordenados a ese tema, las solicitudes de los mensajes ordenados se rechazarán y se devolverá una excepción de discrepancia de tipos.
Compatibilidad de versiones
La verificación obligatoria del tipo de mensaje solo aplica a los brokers de ApsaraMQ for RocketMQ 5.x.
Los brokers de ApsaraMQ for RocketMQ 4.x no aplican esta verificación. No obstante, se recomienda mantener la consistencia del tipo de mensaje cuando utilice estos brokers.
Notas de uso
Planifique los temas según las categorías de negocio
Al diseñar temas en ApsaraMQ for RocketMQ, se recomienda agrupar los mensajes por categoría principal de negocio. Reúna en un solo tema aquellos mensajes que compartan los mismos atributos funcionales dentro de un mismo dominio de negocio. Al determinar la granularidad de los temas, considere los siguientes factores:
Consistencia del tipo de mensaje: los distintos tipos de mensajes, como los ordenados y los normales, requieren temas separados.
Relevancia del negocio: si los negocios no están directamente relacionados, utilice temas distintos. Por ejemplo, los mensajes de transacciones de Taobao y los mensajes logísticos de Freshippo no tienen traslape comercial, por lo que necesitan temas diferentes. Para los mensajes de un mismo negocio, como las transacciones de Taobao, puede usar un solo tema tanto para pedidos de ropa femenina como masculina. Sin embargo, si el volumen de negocio es alto o los submódulos requieren categorizar aún más los tipos de pedido, divida los mensajes en dos temas independientes: uno para pedidos de ropa femenina y otro para ropa masculina.
Volumen de mensajes: se recomienda utilizar temas distintos para los mensajes de negocio que difieran en magnitud o en requisitos de puntualidad. Por ejemplo, algunos mensajes de negocio tienen un volumen muy bajo, pero son altamente sensibles al tiempo. Si estos mensajes comparten un tema con un negocio que genera un gran volumen, el tiempo de espera de los mensajes urgentes aumentará.
Ejemplo de división correcta de temas: en un escenario de compras en línea, utilice un tema para los mensajes de transacción de pedidos, como la creación, el pago y la cancelación. Emplee un tema aparte para los mensajes relacionados con la logística y otro distinto para los mensajes de gestión de puntos.
Ejemplos de división incorrecta de temas:
División con una granularidad demasiado gruesa: provoca un aislamiento deficiente del negocio y dificulta las tareas independientes de operación y mantenimiento, así como la resolución de fallas. Un ejemplo es usar un solo tema para todos los mensajes de transacciones y logística.
División con una granularidad demasiado fina: consume recursos excesivos de los temas y puede sobrecargar el sistema. Un ejemplo es crear un tema separado para cada ID de usuario.
Utilice un solo tema para un tipo de mensaje y evite mezclar tipos
Los temas en ApsaraMQ for RocketMQ están diseñados para aislar los negocios. Se recomienda emplear temas distintos para mensajes con lógicas de negocio diferentes. Los mensajes que comparten la misma lógica de negocio tienen el mismo tipo de mensaje. Por lo tanto, un tema debe utilizarse exclusivamente para un tipo de mensaje.
Evite usar mecanismos automatizados para gestionar temas
En la arquitectura de ApsaraMQ for RocketMQ, los temas son recursos y contenedores de nivel superior. Cuentan con capacidades independientes para la gestión de permisos, la recopilación de métricas de observability y el monitoreo. Crear y gestionar temas consume recursos del sistema. Por ello, administre estrictamente los recursos de los temas en un entorno de producción. No agregue, elimine, modifique ni consulte temas de forma arbitraria.