Consulte os principais conceitos do ApsaraMQ for RabbitMQ. Se você está começando a trabalhar com filas de mensagens, comece pela visão geral do fluxo de mensagens para entender como os componentes se integram. Use a referência alfabética para pesquisar termos específicos.
Visão geral do fluxo de mensagens
Uma mensagem percorre quatro etapas do produtor ao consumidor:
Um produtor publica uma mensagem em um exchange com uma routing key.
O exchange avalia seus bindings — regras que mapeiam routing keys para filas — e encaminha a mensagem para uma ou mais filas.
A mensagem permanece na fila até que um consumidor a recupere.
O consumidor processa a mensagem e envia um reconhecimento ao broker.
Esses componentes residem em um vhost, que fornece isolamento lógico. Vários vhosts são executados em uma única instância — o recurso gerenciado do ApsaraMQ for RabbitMQ provisionado na Alibaba Cloud.
Producer --> Exchange --> Binding --> Queue --> Consumer
| |
| (routing key | (acknowledgment)
| + exchange type |
| determine routing) |
| |
+---------+ +-------------+
| vhost | | channel |
+----+----+ +------+------+
| |
+----+----+ +------+------+
|instance | | connection |
+---------+ | (TCP) |
+-------------+
Referência alfabética
A
Alternate exchange
Exchange de fallback. Se nenhum binding corresponder à routing key, o exchange não conseguirá rotear a mensagem para nenhuma fila. Nesse caso, ele encaminha a mensagem para seu alternate exchange (AE) configurado.
Arguments
Parâmetros de configuração no nível da fila. Use arguments para definir propriedades como tempo de vida da mensagem (TTL), dead-letter exchange e dead-letter routing key.
Auto delete
Atributo de exchanges e filas que controla a limpeza automática:
Exchange: excluído automaticamente após todas as filas se desvincularem dele.
Fila: excluída automaticamente após todos os consumidores cancelarem a assinatura.
B
Binding
Regra de roteamento que vincula um exchange a uma fila. O exchange usa bindings para decidir quais filas recebem determinada mensagem. Cada binding geralmente inclui uma chave ou padrão de binding que o exchange compara com a routing key da mensagem.
C
Channel
Conexão virtual leve que multiplexa operações sobre uma única conexão TCP. Como abrir uma nova conexão TCP para cada operação é custoso, o AMQP usa channels para compartilhar uma conexão entre várias tarefas simultâneas. Um padrão comum é abrir um channel por thread.
Para obter mais informações, consulte Conexões e channels.
Connection
Conexão TCP física entre um cliente (produtor ou consumidor) e o broker do ApsaraMQ for RabbitMQ. Uma única connection pode transportar múltiplos channels.
Para obter mais informações, consulte Conexões e channels.
Consumer
Aplicação que assina uma fila para receber e processar mensagens.
D
Dead-letter exchange
Exchange que roteia mensagens de dead-letter para uma fila de dead-letter. Qualquer tipo padrão de exchange (direct, fanout, topic ou headers) pode funcionar como dead-letter exchange. O roteamento baseia-se na dead-letter routing key e nos cabeçalhos da mensagem.
Para obter mais informações, consulte Dead-letter exchanges.
Dead-letter message
Mensagem que o broker encaminha para um dead-letter exchange. Uma mensagem torna-se dead-letter nas seguintes situações:
O consumidor rejeita a mensagem com
basic.rejectoubasic.nacke o parâmetrorequeueestá definido comofalse.A mensagem não é consumida após 16 tentativas de reentrega. Para obter mais informações, consulte Políticas de nova tentativa.
A mensagem excede seu TTL na fila. Para obter mais informações, consulte TTL de mensagem.
Dead-letter queue
Fila vinculada a um dead-letter exchange. As dead-letter queues armazenam mensagens de dead-letter para inspeção ou reprocessamento posterior.
Dead-letter routing key
Routing key usada para rotear uma mensagem de dead-letter do dead-letter exchange para a dead-letter queue. Se nenhuma dead-letter routing key estiver definida, a routing key original da mensagem será usada.
Delayed message
Mensagem que o broker retém por um atraso especificado antes de entregá-la aos consumidores. Mensagens atrasadas são úteis para processamento agendado — por exemplo, enviar um lembrete 30 minutos após a criação de um pedido.
Para obter mais informações, consulte Mensagens atrasadas.
Durability
Propriedade de filas, exchanges e bindings. Entidades duráveis sobrevivem a reinicializações do broker; entidades não duráveis são excluídas quando o broker reinicia.
E
Exchange
Camada de roteamento entre produtores e filas. Um produtor publica uma mensagem em um exchange, que a roteia para uma ou mais filas com base no tipo de exchange, nos bindings e na routing key.
Para obter mais informações, consulte Exchanges.
I
Instância
Recurso gerenciado do ApsaraMQ for RabbitMQ na Alibaba Cloud. Uma instância é uma entidade independente que contém vhosts, exchanges, filas e outros recursos.
Limitação de taxa da instância
Limite de taxa ativado quando o pico de transações por segundo (TPS) de uma instância excede o limiar de TPS configurado no momento da compra. Quando a limitação é acionada:
O broker retorna um código de erro e uma mensagem de erro.
O broker fecha o channel usado pela solicitação atual. Detecte essa exceção em seu código e reabra o channel.
Para obter mais informações, consulte Melhores práticas para limitação de taxa da instância.
Internal
Atributo de exchange. Um exchange interno não pode receber mensagens diretamente dos produtores — ele só recebe mensagens de outros exchanges por meio de bindings entre exchanges.
M
Message ID
Atributo opcional de string curta que serve como identificador exclusivo para uma mensagem. Os Message IDs ajudam a rastrear e deduplicar mensagens em casos de uso como acompanhamento de pedidos e processamento de chamados.
Os brokers do ApsaraMQ for RabbitMQ não garantem idempotência de mensagens. Para garantir processamento idempotente, atribua um identificador exclusivo a cada mensagem e implemente lógica de deduplicação em seu consumidor.
Para obter mais informações, consulte Implementando idempotência.
Message TTL
Tempo máximo que uma mensagem pode permanecer em uma fila antes de expirar, especificado como um número inteiro não negativo em milissegundos. Por exemplo, um TTL de 1000 significa que a mensagem expira após 1 segundo na fila. Mensagens expiradas são descartadas ou roteadas para um dead-letter exchange, caso haja um configurado.
Para obter mais informações, consulte TTL de mensagem.
P
Producer
Aplicação que cria e publica mensagens em um exchange.
Q
Queue
Buffer que armazena mensagens até que os consumidores as recuperem. Cada mensagem pode ser roteada para uma ou mais filas.
R
Routing key
String que o produtor anexa a cada mensagem. O exchange usa a routing key — juntamente com seu tipo e bindings — para determinar quais filas recebem a mensagem. O comportamento exato de correspondência depende do tipo de exchange.
V
Vhost
Host virtual que fornece isolamento lógico de recursos dentro de uma instância. Cada vhost possui seu próprio conjunto de exchanges, filas e bindings, de modo que aplicações em vhosts diferentes não interferem umas nas outras.
Uma instância pode conter vários vhosts, e cada vhost pode conter múltiplos exchanges e filas. Especifique um vhost ao conectar um produtor ou consumidor ao ApsaraMQ for RabbitMQ.