

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Resolvendo a sincronização de fila pausada do RabbitMQ
<a name="rabbitmq-queue-sync"></a>

Em uma [implantação de cluster](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-cluster) do Amazon MQ para RabbitMQ, as mensagens publicadas em cada fila são replicadas em três nós de agente. Esta replicação, chamada de *espelhamento*, fornece alta disponibilidade (HA) para agentes RabbitMQ. As filas em uma implantação de cluster consistem em uma réplica *principal* em um nó e um ou mais *espelhos*. Cada operação aplicada a uma fila espelhada, incluindo o enfileiramento de mensagens, é aplicada primeiro à fila principal e, em seguida, replicada em seus espelhos.

Por exemplo, considere uma fila espelhada replicada em três nós: o nó principal (`main`) e dois espelhos (`mirror-1` e `mirror-2`). Se todas as mensagens nessa fila espelhada forem propagadas com êxito para todos os espelhos, a fila será sincronizada. Se um nó (`mirror-1`) se tornar indisponível por um intervalo de tempo, a fila ainda estará operacional e poderá continuar a enfileirar mensagens. No entanto, para sincronizar a fila, as mensagens publicadas no `main` enquanto `mirror-1` estiver indisponível devem ser replicadas para `mirror-1`.

Para obter mais informações sobre o espelhamento, consulte [Filas Espelhadas Clássicas](https://www.rabbitmq.com/ha.html) no site RabbitMQ.

**Manutenção e sincronização de filas**

Durante as [janelas de manutenção](amazon-mq-rabbitmq-editing-broker-preferences.md#rabbitmq-edit-current-configuration-console), o Amazon MQ executa todos os trabalhos de manutenção um nó de cada vez para garantir que o agente permaneça operacional. Como resultado, as filas podem precisar sincronizar à medida que cada nó retoma a operação. Durante a sincronização, as mensagens que precisam ser replicadas em espelhos são carregadas na memória do volume correspondente do Amazon Elastic Block Store (Amazon EBS) para serem processadas em lotes. O processamento de mensagens em lotes permite que as filas sejam sincronizadas mais rapidamente.

Se as filas forem mantidas curtas e as mensagens forem pequenas, as filas serão sincronizadas com êxito e retomarão a operação conforme esperado. No entanto, se a quantidade de dados em um lote se aproximar do limite de memória do nó, o nó gera um alarme de memória alta, pausando a sincronização de fila. Você pode confirmar o uso da memória comparando as [métricas do nó `RabbitMemUsed` e do `RabbitMqMemLimit` broker em CloudWatch](amazon-mq-accessing-metrics.md). A sincronização não pode ser concluída até que as mensagens sejam consumidas ou excluídas ou o número de mensagens no lote seja reduzido.

**nota**  
Reduzir o tamanho do lote de sincronização de fila pode resultar em um número maior de transações de replicação.

Para resolver uma sincronização de fila pausada, siga as etapas deste tutorial, que demonstra a aplicação de uma política `ha-sync-batch-size` e reiniciar a sincronização de filas.

**Topics**
+ [Pré-requisitos](#rabbitmq-queue-sync-prerequisites)
+ [Etapa 1: Aplicar uma política `ha-sync-batch-size`](#rabbitmq-queue-sync-step-1)
+ [Etapa 2: Reiniciar a sincronização de filas](#rabbitmq-queue-sync-step-2)
+ [Próximas etapas](#rabbitmq-queue-sync-next-steps)
+ [Recursos relacionados](#rabbitmq-queue-sync-related-resources)

## Pré-requisitos
<a name="rabbitmq-queue-sync-prerequisites"></a>

Para este tutorial, você deve ter um usuário do agente Amazon MQ para RabbitMQ com permissões de administrador. Você pode usar o usuário administrador criado quando criou o agente pela primeira vez ou outro usuário que você possa ter criado posteriormente. A tabela a seguir fornece a etiqueta de usuário administrador necessária e as permissões como padrões de expressão regular (regexp).


| Etiquetas | Ler regexp | Configurar regexp | Escrever regexp | 
| --- | --- | --- | --- | 
| administrator | .\$1 | .\$1 | .\$1 | 

Para obter mais informações sobre criar usuários RabbitMQ e gerenciar etiquetas e permissões de usuário, consulte [Usuários do agente do Amazon MQ para RabbitMQ](rabbitmq-simple-auth-broker-users.md#rabbitmq-basic-elements-user).

## Etapa 1: Aplicar uma política `ha-sync-batch-size`
<a name="rabbitmq-queue-sync-step-1"></a>

Os procedimentos a seguir demonstram a adição de uma política que se aplica a todas as filas criadas no agente. Você pode usar o console da Web do RabbitMQ ou a API de gerenciamento do RabbitMQ. Para obter mais informações, consulte [Plugin Gerenciamento](https://www.rabbitmq.com/management.html) no site do RabbitMQ.

**Para aplicar uma política `ha-sync-batch-size` usando o console da Web RabbitMQ**

1. Faça login no [console do Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. No painel de navegação à esquerda, escolha **Agentes**.

1. Na lista de agentes, escolha o nome do agente ao qual você deseja aplicar a nova política.

1. Na página do agente, na seção **Conexões**, escolha a URL **RabbitMQ web console (Console da Web RabbitMQ)**. O console da Web do RabbitMQ é aberto em uma nova guia ou janela do navegador.

1. Faça login no console da Web do RabbitMQ com as credenciais de login de administrador do agente.

1. No console da Web do RabbitMQ, na parte superior da página, escolha **Admin**.

1. Na página **Admin**, no painel de navegação da direita, selecione **Políticas**.

1. Na página **Políticas**, você pode ver uma lista das **Políticas de usuário** atuais do agente. Abaixo das **User policies** (Políticas de usuário), expanda **Add/update a policy** (Adicionar/atualizar uma política).
**nota**  
Por padrão, os clusters Amazon MQ para RabbitMQ são criados com uma política de agente inicial chamada `ha-all-AWS-OWNED-DO-NOT-DELETE`. O Amazon MQ gerencia essa política para garantir que cada fila no agente seja replicada para todos os três nós e que as filas sejam sincronizadas automaticamente.

1. Para criar uma política de agente, em **Add/update a policy** (Adicionar/atualizar uma política), faça o seguinte:

   1. Em **Nome**, insira um nome para a sua política, por exemplo **batch-size-policy**.

   1. Para **Pattern** (Padrão), insira o padrão de expressão regular **.\$1** para que a política corresponda a todas as filas no agente.

   1. Para **Apply to** (Aplicar em), escolha **Exchanges and queues** (Trocas e filas) na lista suspensa.

   1. Para **Priority** (Prioridade), insira um número inteiro maior que todas as outras políticas aplicadas ao vhost. Você pode aplicar exatamente um conjunto de definições de política a filas e trocas RabbitMQ a qualquer momento. O RabbitMQ escolhe a política correspondente com o valor de prioridade mais alto. Para obter mais informações sobre prioridades de política e como combinar políticas, consulte [Policies](https://www.rabbitmq.com/parameters.html#policies) (Políticas) na Documentação do Servidor RabbitMQ.

   1. Para **Definition** (Definição), adicione os seguintes pares de chave-valor:
      + **ha-sync-batch-size**=*100*. Escolha **Número** na lista suspensa.
**nota**  
Talvez seja necessário ajustar e calibrar o valor de `ha-sync-batch-size` com base no número e tamanho das mensagens não sincronizadas nas filas.
      + **ha-mode**=**all**. Selecione **String (String)** na lista suspensa.
**Importante**  
A definição `ha-mode` é necessária para todas as políticas relacionadas a HA. Omitir isso resulta em uma falha de validação.
      + **ha-sync-mode**=**automatic**. Selecione **String (String)** na lista suspensa.
**nota**  
A definição `ha-sync-mode` é necessária para todas as políticas personalizadas. Se isso for omitido, o Amazon MQ anexará automaticamente a definição.

   1. Escolha **Add/update policy (Adicionar/atualizar política)**.

1. Confirme se a nova política aparece na lista de **User policies** (Políticas de usuário).

**Para aplicar uma política `ha-sync-batch-size` usando a API de gerenciamento RabbitMQ**

1. Faça login no [console do Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. No painel de navegação à esquerda, escolha **Agentes**.

1. Na lista de agentes, escolha o nome do agente ao qual você deseja aplicar a nova política.

1. Na página do agente, na seção **Connections** (Conexões), anote a URL do **RabbitMQ web console** (Console da Web RabbitMQ). Este é o endpoint do agente que você usa em uma solicitação HTTP.

1. Abra uma nova janela de terminal ou linha de comando de sua escolha.

1. Para criar uma nova política de agente, insira o comando `curl` a seguir. Este comando assume uma fila no vhost `/` padrão, que é codificada como `%2F`.
**nota**  
Substitua *username* e *password* por suas credenciais de login de administrador do corretor. Talvez seja necessário ajustar e calibrar o valor de `ha-sync-batch-size` (*100*) com base no número e no tamanho das mensagens não sincronizadas em suas filas. Substitua o endpoint do agente com a URL que você anotou anteriormente.

   ```
   curl -i -u username:password -H "content-type:application/json" -XPUT \
   -d '{"pattern":".*", "priority":1, "definition":{"ha-sync-batch-size":100, "ha-mode":"all", "ha-sync-mode":"automatic"}}' \
   https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com/api/policies/%2F/batch-size-policy
   ```

1. Para confirmar se a nova política foi adicionada às políticas de usuário do seu agente, insira o seguinte comando `curl` para listar todas as políticas de agente.

   ```
   curl -i -u username:password https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com/api/policies
   ```

## Etapa 2: Reiniciar a sincronização de filas
<a name="rabbitmq-queue-sync-step-2"></a>

Depois de aplicar uma nova política `ha-sync-batch-size` para seu agente, reinicie a sincronização de fila.

**Para reiniciar a sincronização de filas usando o console da Web RabbitMQ**
**nota**  
Para abrir o console da Web RabbitMQ, consulte as instruções anteriores na Etapa 1 deste tutorial.

1. No console da Web do RabbitMQ, na parte superior da página, escolha **Queues (Filas)**.

1. Na página **Filas**, em **Todas as filas**, localize sua fila pausada. Na coluna **Política**, sua fila deve listar o nome da nova política que você criou (por exemplo, `batch-size-policy`).

1. Para reiniciar o processo de sincronização com um tamanho de lote reduzido, primeiro cancele a sincronização da fila. Em seguida, reinicie a sincronização da fila. 

**nota**  
Se a sincronização for interrompida e não for concluída com êxito, tente reduzir o valor `ha-sync-batch-size` e reiniciar a sincronização de fila novamente.

## Próximas etapas
<a name="rabbitmq-queue-sync-next-steps"></a>
+ Depois que sua fila for sincronizada com sucesso, você poderá monitorar a quantidade de memória que seus nós do RabbitMQ usam visualizando a métrica da Amazon. CloudWatch `RabbitMQMemUsed` Você também pode visualizar a métrica `RabbitMQMemLimit` para monitorar o limite de memória de um nó. Para obter mais informações, consulte [Acessando CloudWatch métricas para o Amazon MQ](amazon-mq-accessing-metrics.md) e [CloudWatch Métricas disponíveis para Amazon MQ para corretores RabbitMQ](rabbitmq-logging-monitoring.md).
+ Para evitar pausar a sincronização de filas, recomendamos manter as filas curtas e processar as mensagens. Para workloads com tamanhos de mensagem maiores, também recomendamos atualizar o tipo de instância do agente para um tamanho de instância maior com mais memória. Para obter mais informações sobre os tipos de instância do agente e como editar as preferências do agente consulte [Editar as preferências de agente](amazon-mq-rabbitmq-editing-broker-preferences.md).
+  Quando você cria um novo Amazon MQ para o agente RabbitMQ, o Amazon MQ aplica um conjunto de políticas padrão e limites de host virtual para otimizar a performance do agente. Se o seu agente não tiver as políticas e limites padrão recomendados, recomendamos criá-las você mesmo. Para obter mais informações sobre como criar políticas padrão e limites vhost, consulte [https://docs.aws.amazon.com//amazon-mq/latest/developer-guide/rabbitmq-defaults.html](https://docs.aws.amazon.com//amazon-mq/latest/developer-guide/rabbitmq-defaults.html). 

## Recursos relacionados
<a name="rabbitmq-queue-sync-related-resources"></a>
+  [UpdateBrokerInput](https://docs.aws.amazon.com/amazon-mq/latest/api-reference/brokers-broker-id.html#brokers-broker-id-model-updatebrokerinput)— Use essa propriedade de agente para atualizar um tipo de instância de agente usando a API do Amazon MQ.
+ [Parâmetros e Políticas](https://www.rabbitmq.com/parameters.html) (Documentação do Servidor RabbitMQ): Saiba mais sobre os parâmetros e políticas do RabbitMQ no site do RabbitMQ.
+ [API HTTP de gerenciamento do RabbitMQ](https://pulse.mozilla.org/api/) — Saiba mais sobre a API de gerenciamento do RabbitMQ.