Todos os produtos
Search
Central de documentação

ApsaraMQ for RocketMQ:Filas de mensagens

Última atualização: Jun 27, 2026

No ApsaraMQ for RocketMQ, uma fila é um log ordenado e apenas para adição que armazena e entrega mensagens. Ela representa a menor unidade de armazenamento de mensagens. Os produtores adicionam novas mensagens ao final da fila. Os consumidores leem a partir de qualquer posição referenciando um offset — um número inteiro sequencial que indexa a posição de cada mensagem no log. O consumidor controla esse offset e pode ler sequencialmente, avançar para a posição mais recente ou redefinir para um offset anterior para reprocessar o histórico.

Cada tópico (e tópico leve) consiste em uma ou mais filas. As filas oferecem duas capacidades principais:

  • Armazenamento ordenado: as mensagens dentro de uma fila preservam sua ordem de escrita. A mensagem mais antiga fica no início e a mais recente no final. Os consumidores usam o offset para rastrear sua posição de leitura.

  • Semântica de streaming: como o modelo de armazenamento é baseado em filas, os consumidores podem ler qualquer intervalo de mensagens a partir de qualquer offset. Isso permite leituras agregadas (consumo em lote em um intervalo) e leituras retroativas (reprocessamento de mensagens anteriores). Brokers tradicionais, como RabbitMQ e ActiveMQ, não suportam essas operações porque não possuem um modelo de armazenamento baseado em filas.

Relação entre filas e tópicos

O diagrama a seguir ilustra como as filas se encaixam no modelo de domínio do ApsaraMQ for RocketMQ:

Queue position in the domain model

Um tópico é um agrupamento lógico de mensagens. As filas são os componentes físicos de armazenamento dentro de um tópico onde as mensagens são persistidas e lidas. Embora todos os recursos de mensagem sejam gerenciados no nível de tópico e tópico leve, as operações reais ocorrem nas filas. Por exemplo, quando um produtor envia uma mensagem para um tópico, o broker a entrega em uma das filas desse tópico.

Todas as mensagens enviadas com sucesso são armazenadas de forma durável. Combinado com os reconhecimentos dos clientes produtores e consumidores, isso garante a semântica de entrega de pelo menos uma vez.

As filas no ApsaraMQ for RocketMQ desempenham o mesmo papel que as partições no Apache Kafka. Se você já conhece as partições do Kafka, o modelo de filas funciona da mesma maneira.

Dimensionamento horizontal

O ApsaraMQ for RocketMQ dimensiona horizontalmente ajustando o número de filas em um tópico:

  • Scale-out: adicione filas para distribuir a carga entre mais nós de serviço.

  • Scale-in: remova filas para consolidar recursos.

Permissões de leitura e escrita

Cada fila possui uma configuração de permissão que controla o acesso:

Valor

Permissão

Comportamento

6

Leitura e escrita

Permite operações de leitura e escrita

4

Somente leitura

Permite apenas leitura de mensagens históricas; proíbe novas escritas

2

Somente escrita

Permite apenas escrita de novas mensagens; proíbe leituras

0

Sem acesso

Bloqueia todas as operações de leitura e escrita

Alterar as permissões da fila é uma operação de O&M. Evite modificações frequentes.

Restrições de quantidade de filas

A quantidade de filas para cada tópico ou tópico leve depende de:

  • Tipo de mensagem

  • Região onde a instância está localizada

As quantidades de filas são gerenciadas pelo sistema e não podem ser modificadas.

Compatibilidade de versões

A nomenclatura das filas difere entre as versões do serviço:

Versão

Formato do nome da fila

Relação com os nós

3.x e 4.x

Tupla tripla: {Topic Name}+{Broker ID}+{Queue ID}

Vinculado a um nó físico

5.x

String globalmente única atribuída pelo cluster

Desacoplado dos nós físicos

Importante

Nunca codifique rigidamente (hardcode) nem presuma um formato específico de nome de fila em sua aplicação. Nomes de fila construídos manualmente falharão após uma atualização de versão, pois o esquema de nomenclatura muda.

Melhores práticas para dimensionamento de filas

Mantenha a contagem de filas baixa

Utilize apenas a quantidade de filas necessária para sua carga de trabalho. O excesso de filas causa dois problemas:

  • Inchaço de metadados: as métricas são coletadas no nível da fila. Mais filas significam mais metadados do plano de controle para gerencie.

  • Desperdício de recursos do cliente: leituras e escritas ocorrem por fila. Filas ociosas geram solicitações de polling vazias que consomem recursos do cliente e do servidor.

Quando adicionar filas

Balanceamento de carga de nós físicos: após adicionar nós a um cluster, crie filas nos novos nós ou migre as filas existentes para distribuir o tráfego uniformemente.

Throughput de mensagens ordenadas (v4.x): na versão 4.x do serviço, a ordenação das mensagens é garantida apenas dentro de uma única fila. Portanto, a quantidade de filas limita diretamente a concorrência de mensagens ordenadas. Adicione filas somente ao atingir um gargalo de desempenho.

Mensagens não ordenadas na v5.x — nenhuma ação necessária: a versão 5.x do serviço suporta balanceamento de carga do consumidor no nível da mensagem. As mensagens dentro da mesma fila são distribuídas uniformemente entre todos os consumidores, de modo que a quantidade de filas não afeta a concorrência de consumo. Para obter detalhes, consulte Balanceamento de carga do consumidor.