Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Modelo de lite topic

Última atualização: Jun 27, 2026

Este tópico descreve a definição, as relações do modelo, os atributos internos, as restrições comportamentais, a compatibilidade de versões e as recomendações de uso do LiteTopic no ApsaraMQ for RocketMQ.

Pré-requisitos

  • Atualmente, apenas instâncias não Serverless (assinatura e pagamento conforme o uso) e instâncias Serverless dedicadas suportam lite topics.

  • Para adquirir uma instância compatível com o modelo de lite topic:

    • Ao comprar uma nova instância, adicione uma tag de capacidade do produto na página de compra com a chave de tag version_capability e o valor da tag lite-topic.

    • Para instâncias existentes, envie um ticket para atualizar para uma versão compatível com o modelo de lite topic. Inclua o ID da instância e a região ao enviar o ticket.

  • Envie um ticket para obter consultoria gratuita sobre soluções de LiteTopic para seus cenários específicos.

Definição

Um lite topic é um contêiner secundário para transmissão e armazenamento de mensagens no ApsaraMQ for RocketMQ. Ele identifica mensagens pertencentes a diferentes subclasses (como sessões distintas, tarefas ou outras granularidades) sob o mesmo tipo de lógica de negócios.

As principais finalidades dos lite topics são:

  • Permitir consumo exclusivo e definir isolamento de dados em nível secundário.

Recomendamos separar os dados de diferentes subcategorias em lite topics distintos para obter isolamento mais refinado de armazenamento e assinatura.

  • Definir identidade e permissões de dados.

Os lite topics, construídos sobre o gerenciamento de identidade e permissões baseado em tópicos, permitem refinar ainda mais as identidades e permissões dos usuários.

Relações do modelo

No modelo de domínio do ApsaraMQ for RocketMQ, o fluxo e a posição dos lite topics são os seguintes:

image.png

  • O tópico é o contêiner de nível superior para transmissão e armazenamento de mensagens no ApsaraMQ for RocketMQ. Quando o tipo do tópico é Lite, crie um lite topic sob ele. A combinação de tópico e lite topic identifica exclusivamente o contêiner de armazenamento de mensagens.

  • Quando o tipo do tópico é Lite, cada contêiner de armazenamento possui, por padrão, uma fila.

Propriedades internas

Nome do lite topic

  • Definição: Nome que identifica um lite topic. Os nomes dos lite topics são globalmente exclusivos dentro de seu tópico pai.

  • Valor: Quando o tipo do tópico é Lite e você chama setLiteTopic em uma mensagem, o sistema cria automaticamente o lite topic caso ele ainda não exista.

  • Restrição: Consulte Limites de parâmetros.

Tempo de vida (TTL)

  • Definição: Tempo de expiração de um lite topic. Se nenhuma nova mensagem for gravada no lite topic por um período superior ao seu TTL, o sistema o exclui automaticamente. A exclusão libera a contagem alocada ao lite topic (contagem total menos um).

  • Valor: Ao criar um tópico do tipo Lite, defina o parâmetro de expiração.

  • Restrição: Consulte Limites de parâmetros.

Compatibilidade de versões

  • Versão do servidor: 5.0-rmq-20251024-1 ou posterior

  • Versão do cliente: RocketMQ gRPC 5.1.0 ou posterior

Diferenças entre tópicos do tipo lite e do tipo padrão

Cenário

Item de comparação

Tópicos leves

Tópico do tipo padrão

Armazenamento de mensagens

Tópico de nível superior

Igual. Ambos exigem a criação prévia do recurso de tópico.

Tópico de segundo nível

Crie milhões de recursos LiteTopic de segundo nível sob um tópico, cada um com novos recursos.

Não há recursos de tópico de segundo nível.

Gerenciamento automatizado de ciclo de vida

O gerenciamento de ciclo de vida do LiteTopic é automatizado:

  • Criação automática: Se um LiteTopic não existir durante o envio ou a assinatura, o sistema o cria automaticamente.

  • Exclusão automática: Defina um tempo de expiração. O sistema exclui o LiteTopic automaticamente se nenhuma nova mensagem for enviada pelo período especificado.

Nenhum

Ordenação

Cada LiteTopic possui exatamente uma fila. As mensagens na mesma fila são armazenadas em ordem.

  • Por LiteTopic

Várias filas são criadas. Apenas tópicos ordenados particionados garantem a ordenação.

TPS máximo simultâneo para envio/recebimento

Como cada LiteTopic tem apenas uma fila, seu TPS é limitado.

No entanto, crie milhões de LiteTopics sob um único tópico para que o TPS total escale conforme o número de LiteTopics.

O TPS do tópico escala horizontalmente com base na contagem de filas e na quantidade de nós do cluster.

Consumo de mensagens

Consistência de assinatura

Não precisam ser iguais.

Dentro do mesmo grupo, cada consumidor pode assinar um conjunto diferente de LiteTopics. As restrições no nível do grupo são flexibilizadas.

Obrigatório.

Todos os consumidores no mesmo grupo devem manter assinaturas idênticas para compartilhar mensagens do tópico de destino.

Ordenação

Consumo ordenado: As mensagens em um LiteTopic são processadas por apenas uma thread de consumidor.

Suporta consumo concorrente ou ordenado.

Assinatura dinâmica

Adicione ou remova dinamicamente assinaturas para LiteTopics específicos em cada consumidor.

Nenhum

Máximo de LiteTopics que um único consumidor pode assinar

Cada consumidor pode assinar milhares de LiteTopics.

Nenhum

Observabilidade

Métricas

Inclui métricas de acúmulo de mensagens.

Não há métrica disponível para tempo de atraso no processamento de mensagens.

Inclui métricas de acúmulo de mensagens.

Métrica de tempo de processamento de mensagens

Rastreamento de mensagens

Igual

Casos de uso comuns de lite topic

Caso de uso 1: Comunicação assíncrona para sistemas Multi-Agent visando resolver bloqueios em chamadas de longa duração

À medida que os cenários de IA se tornam mais complexos, os sistemas de agente único enfrentam limitações: falta de especialização, dificuldade de integração de múltiplos domínios e incapacidade de permitir tomada de decisão colaborativa dinâmica. Aplicações e fluxos de trabalho de agente único estão migrando para arquiteturas Multi-Agent. No entanto, como as tarefas de IA geralmente levam muito tempo, chamadas síncronas bloqueiam a thread do chamador e limitam a escalabilidade para colaboração em larga escala.

image.png

Conforme ilustrado acima, o fluxo de trabalho Multi-Agent funciona da seguinte maneira: O Supervisor Agent divide uma solicitação em duas subtarefas para dois agentes filhos. Cada agente filho resolve sua parte e retorna os resultados ao Supervisor Agent, que os agrega e envia a resposta final ao cliente web. Utilize o RocketMQ para comunicação assíncrona:

  1. Fluxo de tratamento de solicitações:

    1. Crie um tópico (Request) para cada agente filho como uma fila de buffer de tarefas. Use um tópico prioritário para processar primeiro as tarefas de alta prioridade.

    2. O Supervisor Agent envia os detalhes das tarefas divididas para o tópico de solicitação correspondente.

  2. Fluxo de tratamento de respostas:

    1. O Supervisor Agent cria um tópico do tipo Lite (Response) e o assina.

    2. Cada agente filho envia o resultado de sua tarefa para um LiteTopic sob o tópico Response. Nomeie cada LiteTopic usando o ID da tarefa para fornecer a cada tarefa seu próprio LiteTopic dedicado.

    3. O Supervisor Agent recebe os resultados em tempo real por meio da assinatura e os envia ao cliente web usando HTTP SSE.

Caso de uso 2: Gerenciamento distribuído de estado de sessão para resolver problemas de continuidade de sessão em aplicações de IA

As interações em aplicações de IA são únicas: de longa duração, com múltiplas turnos e altamente dependentes de recursos computacionais caros por sessão. Quando as aplicações dependem de conexões persistentes, como SSE, qualquer desconexão (devido a reinicializações de gateway, tempos limite ou instabilidade de rede) causa perda do contexto da sessão atual e desperdiça recursos computacionais de IA já investidos.

image.png

Assim como no fluxo de resposta do caso de uso 1, utilize um tópico do tipo Lite para notificações de resultados em tempo real. Nomeie cada LiteTopic usando o SessionID (por exemplo, chatbot/{sessionID}). Todos os resultados da sessão são entregues como mensagens ordenadas neste tópico. Para manter a continuidade da sessão após a reconexão:

  1. O cliente web estabelece uma conexão persistente com o nó 1 do servidor de aplicações e inicia a sessão Session2.

  2. O nó 1 do servidor de aplicações assina o LiteTopic [chat/SessionID2].

  3. O agendador de tarefas do Large Language Model (LLM) envia os resultados para o LiteTopic [chat/SessionID2] com base no SessionID da solicitação.

  4. Devido a um problema de rede, o WebSocket se reconecta ao nó 2 do servidor de aplicações.

  5. O nó 1 do servidor de aplicações cancela a assinatura do LiteTopic [chat/SessionID2]. O nó 2 do servidor de aplicações passa a assiná-lo.

  6. O LiteTopic [chat/SessionID2] retoma a entrega a partir do último offset consumido, garantindo a continuidade do estado e dos dados da sessão.

Código de exemplo

Para exemplos completos, consulte o código de amostra em RocketMQ 5.x gRPC SDK.

Enviar mensagens

Producer producer = provider.newProducerBuilder()
    .setTopics(topic)
    .setClientConfiguration(clientConfiguration)
    .build();
final Message message = provider.newMessageBuilder()
    .setTopic(topic)
    // Set a message key for precise lookup by keyword.
    .setKeys("messageKey")
    // Set LiteTopic
    .setLiteTopic("lite-topic-1")
    // Message body
    .setBody("messageBody".getBytes())
    .build();
try {
    final SendReceipt sendReceipt = producer.send(message);
    log.info("Send message successfully, messageId={}", sendReceipt.getMessageId());
} catch (LiteTopicQuotaExceededException e) {
    // LiteTopic quota exceeded. Evaluate and increase quota.
    log.error("Lite topic quota exceeded", e);
} catch (Throwable t) {
    log.error("Failed to send message", t);
}

Consumir mensagens

Utilize a classe LitePushConsumer:

// Initialize LitePushConsumer with consumer group, target topic, and communication parameters.
LitePushConsumer litePushConsumer = provider.newLitePushConsumerBuilder()
    .setClientConfiguration(clientConfiguration)
    // Topic bound to the ConsumerGroup when created in the console
    .bindTopic(topicName)
    // Set consumer group
    .setConsumerGroup(consumerGroup)
    .setMessageListener(messageView -> {
        // Process message and return consumption result.
        LOGGER.info("Consume message={}", messageView);
        return ConsumeResult.SUCCESS;
    })
    .build();
try {
    // Subscribe to desired LiteTopics
    litePushConsumer.subscribeLite("lite-topic-1");
    litePushConsumer.subscribeLite("lite-topic-2");
    litePushConsumer.subscribeLite("lite-topic-3");
} catch (LiteSubscriptionQuotaExceededException e) {
    // LiteTopic subscription quota exceeded. Evaluate and increase quota.
    log.error("Lite subscription quota exceeded", e);
} catch (Throwable t) {
    log.error("Failed to subscribe lite topic", t);
}
// After business processing, unsubscribe from unused LiteTopics promptly
litePushConsumer.unsubscribeLite("lite-topic-3");
// Get current set of subscribed LiteTopics
Set<String> liteTopicSet = litePushConsumer.getLiteTopicSet();

Atualizar assinaturas dinamicamente

/**
 * Dynamically add a subscription.
 * The subscribeLite() method makes a network call and validates quotas,
 * so it might fail.
 * Always check the result to confirm successful subscription.
 * Possible failure scenarios:
 * 1. Network error – retry the call.
 * 2. Quota validation fails – throws LiteSubscriptionQuotaExceededException.
 * Evaluate whether your quota meets requirements, and promptly call
 * unsubscribeLite() to release resources for unused topics.
 */
litePushConsumer.subscribeLite("lite-topic-1");
// Dynamically remove a subscription
litePushConsumer.unsubscribeLite("lite-topic-1");

Limites

  1. Um único consumidor pode assinar até 2.000 LiteTopics (ajustável via ticket).

  2. Cada LiteTopic suporta um TPS máximo de consumo de 200.

  3. Para garantir a estabilidade do serviço, cada instância impõe um limite no número total de LiteTopics que podem ser criados ou assinados. Consulte a tabela a seguir para cotas específicas (ajustáveis via ticket).

    1. Quantidade de LiteTopics

      • Definição: Número total de LiteTopics atualmente criados e ativos sob uma única instância durante seu ciclo de vida.

      • Gatilho e impacto: Quando esse limite é atingido, tentativas de enviar uma mensagem para um LiteTopic inexistente (o que acionaria a criação automática) falham com um erro de envio.

    2. Contagem de assinaturas de LiteTopic

      • Definição: Número total de relações de assinatura ativas entre todos os clientes consumidores online e os LiteTopics sob uma instância. Esse número muda dinamicamente.

      • Impacto: Quando esse limite é atingido, qualquer tentativa de um consumidor de assinar um novo LiteTopic falha.

      • Regra especial: Mesmo que um LiteTopic seja excluído, quaisquer assinaturas remanescentes de consumidores a ele ainda contam para o total até que esses consumidores cancelem a assinatura.

Instâncias Serverless

Arquitetura de implantação

Modo de capacidade

Especificações

Máximo de LiteTopics criáveis ou assináveis

Dedicada

Reservada + elástica

5.000

300.000

10.000

600.000

15.000

720.000

[20.000, 50.000]

1.000.000

(50.000, 100.000]

1.500.000

(100.000, 200.000]

2.400.000

(200.000, 300.000]

4.700.000

(300.000, 500.000]

6.300.000

(500.000, 1.000.000]

11.600.000

Instâncias não Serverless (assinatura e pagamento conforme o uso)

Standard Edition

Tipo de instância

Limite base de TPS para envio/recebimento (ops/s)

Máximo de LiteTopics criáveis ou assináveis

rmq.s2.2xlarge

2.000

150.000

rmq.s2.4xlarge

4.000

250.000

rmq.s2.6xlarge

6.000

300.000

Professional Edition

Tipo de instância

Limite base de TPS para envio/recebimento (ops/s)

Máximo de LiteTopics criáveis ou assináveis

rmq.p2.2xlarge

2.000

150.000

rmq.p2.4xlarge

4.000

250.000

rmq.p2.6xlarge

6.000

300.000

rmq.p2.10xlarge

10.000

600.000

rmq.p2.20xlarge

20.000

800.000

rmq.p2.30xlarge

30.000

1.000.000

rmq.p2.40xlarge

40.000

1,2 milhão

rmq.p2.50xlarge

50.000

1,4 milhão

rmq.p2.100xlarge

100.000

2.200.000

rmq.p2.120xlarge

120.000

2,7 milhões

rmq.p2.150xlarge

150.000

3,3 milhões

rmq.p2.200xlarge

200.000

4,5 milhões

Platinum Edition

Tipo de instância

Limite base de TPS para envio/recebimento (ops/s)

Máximo de LiteTopics criáveis ou assináveis

rmq.u2.10xlarge

10.000

600.000

rmq.u2.20xlarge

20.000

800.000

rmq.u2.30xlarge

30.000

1.000.000

rmq.u2.40xlarge

40.000

1.200.000

rmq.u2.50xlarge

50.000

1.400.000

rmq.u2.60xlarge

60.000

1.600.000

rmq.u2.70xlarge

70.000

1.700.000

rmq.u2.80xlarge

80.000

1.800.000

rmq.u2.90xlarge

90.000

2.000.000

rmq.u2.100xlarge

100.000

2.200.000

rmq.u2.120xlarge

120.000

2.700.000

rmq.u2.150xlarge

150.000

3.300.000

rmq.u2.200xlarge

200.000

4.500.000

rmq.u2.250xlarge

250.000

5.600.000

rmq.u2.300xlarge

300.000

6.300.000

rmq.u2.350xlarge

350.000

7.500.000

rmq.u2.400xlarge

400.000

9.300.000

rmq.u2.450xlarge

450.000

10.400.000

rmq.u2.500xlarge

500.000

11.600.000

rmq.u2.550xlarge

550.000

12.800.000

rmq.u2.600xlarge

600.000

14.000.000

rmq.u2.1000xlarge

1.000.000

23.200.000