Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Modelo de tópico Lite

Última atualização: Oct 21, 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 para LiteTopic no ApsaraMQ for RocketMQ.

Pré-requisitos

  • Atualmente, os tópicos lite são suportados apenas por instâncias não Serverless (assinatura e pagamento conforme o uso) e instâncias Serverless dedicadas.

  • Para adquirir uma instância que suporte o modelo de tópico lite:

    • Ao adquirir uma nova instância, adicione uma tag de capacidade de 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 que suporte o modelo de tópico lite. Inclua o ID da instância e a região ao enviar o ticket.

  • Você pode enviar um ticket para obter consultoria gratuita sobre soluções LiteTopic para seus cenários específicos.

Definição

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

As principais finalidades dos tópicos lite são:

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

Recomendamos separar dados de subcategorias diferentes em tópicos lite distintos para obter um isolamento mais refinado de armazenamento e assinatura.

  • Definir identidade e permissões de dados.

Construídos sobre o gerenciamento de identidade e permissões baseado em tópicos, os tópicos lite 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 tópicos lite 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 de tópico é Lite, você pode criar um tópico lite sob ele, e a combinação de tópico e tópico lite identifica exclusivamente o contêiner de armazenamento de mensagens.

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

Propriedades internas

Nome do tópico lite

  • Definição: O nome que identifica um tópico lite. Os nomes dos tópicos lite são globalmente únicos dentro de seu tópico pai.

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

  • Restrição: Consulte Parameter limits.

Tempo de vida (TTL)

  • Definição: O tempo de expiração de um tópico lite. Se nenhuma mensagem nova for gravada no tópico lite por um período superior ao seu TTL, o sistema o exclui automaticamente. A exclusão significa liberar a contagem alocada ao tópico lite (contagem total menos um).

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

  • Restrição: Consulte Parameter limits.

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

É possível criar milhões de recursos LiteTopic de segundo nível sob um único 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 LiteTopic é excluído automaticamente após o período especificado sem novas mensagens enviadas.

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 simultâneo máximo para envio/recebimento

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

No entanto, é possível criar milhões de LiteTopics sob um único tópico, de modo que o TPS total escala conforme o número de LiteTopics.

O TPS do tópico escala horizontalmente com base na contagem de filas e no número 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ória.

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 simultâneo ou ordenado.

Assinatura dinâmica

Cada consumidor pode adicionar ou remover dinamicamente assinaturas para LiteTopics específicos.

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 tópicos lite

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 em integrar múltiplos domínios e incapacidade de habilitar 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, limitando a escalabilidade para colaboração em grande escala.

image.png

Conforme ilustrado acima, o fluxo de trabalho Multi-Agent funciona da seguinte forma: O Agente Supervisor divide uma solicitação em duas subtarefas para dois agentes filhos. Cada agente filho resolve sua parte e retorna os resultados ao Agente Supervisor, que os agrega e envia a resposta final ao cliente web. Utilizando 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 Agente Supervisor envia os detalhes das tarefas divididas para o tópico de solicitação correspondente.

  2. Fluxo de tratamento de respostas:

    1. O Agente Supervisor 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 Agente Supervisor recebe resultados em tempo real por meio da assinatura e os envia para o 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 singulares: de longa duração, com múltiplas turnos e altamente dependentes de recursos computacionais custosos 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 uma 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 resultados para o LiteTopic [chat/SessionID2] com base no SessionID da solicitação.

  4. Devido a um problema de rede, o WebSocket reconecta-se 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. Número de LiteTopics

      • Definição: 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: O número total de relacionamentos de assinatura ativos entre todos os clientes consumidores online e LiteTopics sob uma instância. Esse número muda dinamicamente.

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

      • Regra especial: Mesmo que um LiteTopic seja excluído, quaisquer assinaturas restantes de consumidores nele 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áx. de LiteTopics criáveis ou assináveis

Dedicada

Reservada + elástica

5000

300.000

10000

600.000

15000

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/seg)

Máx. de LiteTopics criáveis ou assináveis

rmq.s2.2xlarge

2000

150.000

rmq.s2.4xlarge

4000

250.000

rmq.s2.6xlarge

6000

300.000

Professional Edition

Tipo de instância

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

Máx. de LiteTopics criáveis ou assináveis

rmq.p2.2xlarge

2000

150.000

rmq.p2.4xlarge

4000

250.000

rmq.p2.6xlarge

6000

300.000

rmq.p2.10xlarge

10000

600.000

rmq.p2.20xlarge

20000

800.000

rmq.p2.30xlarge

30000

1.000.000

rmq.p2.40xlarge

40000

1,2 milhão

rmq.p2.50xlarge

50000

1,4 milhão

rmq.p2.100xlarge

100000

2.200.000

rmq.p2.120xlarge

120000

2,7 milhões

rmq.p2.150xlarge

150000

3,3 milhões

rmq.p2.200xlarge

200000

4,5 milhões

Platinum Edition

Tipo de instância

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

Máx. de LiteTopics criáveis ou assináveis

rmq.u2.10xlarge

10000

600.000

rmq.u2.20xlarge

20000

800.000

rmq.u2.30xlarge

30000

1.000.000

rmq.u2.40xlarge

40000

1.200.000

rmq.u2.50xlarge

50000

1.400.000

rmq.u2.60xlarge

60000

1.600.000

rmq.u2.70xlarge

70000

1.700.000

rmq.u2.80xlarge

80000

1.800.000

rmq.u2.90xlarge

90000

2.000.000

rmq.u2.100xlarge

100000

2.200.000

rmq.u2.120xlarge

120000

2.700.000

rmq.u2.150xlarge

150000

3.300.000

rmq.u2.200xlarge

200000

4.500.000

rmq.u2.250xlarge

250000

5.600.000

rmq.u2.300xlarge

300000

6.300.000

rmq.u2.350xlarge

350000

7.500.000

rmq.u2.400xlarge

400000

9.300.000

rmq.u2.450xlarge

450000

10.400.000

rmq.u2.500xlarge

500000

11.600.000

rmq.u2.550xlarge

550000

12.800.000

rmq.u2.600xlarge

600000

14.000.000

rmq.u2.1000xlarge

1000000

23.200.000