

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Résolution de la synchronisation de la file d'attente mise en pause RabbitMQ
<a name="rabbitmq-queue-sync"></a>

Dans un [déploiement en cluster](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-cluster) Amazon MQ for RabbitMQ, les messages publiés dans chaque file d'attente sont répliqués sur trois nœuds d'agent. Cette réplication, appelée *mise en miroir*, fournit une haute disponibilité (HA) pour les agents RabbitMQ. Les files d'attente d'un déploiement en cluster se composent d'un réplica *principal* sur un nœud et un ou plusieurs *miroirs*. Chaque opération appliquée à une file d'attente mise en miroir, y compris les messages de mise en file d'attente, est d'abord appliquée à la file d'attente principale, puis répliquée sur ses miroirs.

Par exemple, considérez une file d'attente en miroir répliquée sur trois nœuds : le nœud principal (`main`) et deux miroirs (`mirror-1` et `mirror-2`). Si tous les messages de cette file d'attente en miroir sont propagés avec succès à tous les miroirs, la file d'attente est synchronisée. Si un nœud (`mirror-1`) devient indisponible pendant un intervalle de temps, la file d'attente est toujours opérationnelle et peut continuer à mettre en file d'attente des messages. Toutefois, pour que la file d'attente se synchronise, les messages publiés dans `main` tandis que `mirror-1` n'est pas disponible doivent être répliqués dans `mirror-1`.

Pour plus d'informations sur la mise en miroir, consultez [Files d'attente mises en miroir classiques](https://www.rabbitmq.com/ha.html) sur le site web RabbitMQ.

**Maintenance et synchronisation des files d'attente**

Lors de [fenêtres de maintenance](amazon-mq-rabbitmq-editing-broker-preferences.md#rabbitmq-edit-current-configuration-console), Amazon MQ effectue tous les travaux de maintenance un nœud à la fois pour s'assurer que l'agent reste opérationnel. Par conséquent, les files d'attente peuvent devoir se synchroniser à mesure que chaque nœud reprend l'opération. Pendant la synchronisation, les messages qui doivent être répliqués en miroirs sont chargés en mémoire à partir du volume Amazon Elastic Block Store (Amazon EBS) correspondant à traiter par lots. Le traitement des messages par lots permet aux files d'attente de se synchroniser plus rapidement.

Si les files d'attente sont courtes et que les messages sont petits, les files d'attente se synchronisent et reprennent le fonctionnement comme prévu. Toutefois, si la quantité de données dans un lot approche de la limite de mémoire du nœud, le nœud déclenche une alarme de mémoire élevée, mettant en pause la synchronisation de la file d'attente. Vous pouvez confirmer l'utilisation de la mémoire en comparant les [métriques du nœud `RabbitMemUsed` et du nœud `RabbitMqMemLimit` broker dans CloudWatch](amazon-mq-accessing-metrics.md). La synchronisation ne peut pas se terminer tant que les messages ne sont pas consommés ou supprimés, ou que le nombre de messages dans le lot est réduit.

**Note**  
La réduction de la taille du lot de synchronisation des files d'attente peut entraîner un plus grand nombre de transactions de réplication.

Pour résoudre une synchronisation de file d'attente mise en pause, suivez les étapes de ce didacticiel, qui illustre l'application d'une politique `ha-sync-batch-size` et le redémarrage de la synchronisation de la file d'attente.

**Topics**
+ [Conditions préalables](#rabbitmq-queue-sync-prerequisites)
+ [Étape 1 : Appliquer une politique `ha-sync-batch-size`](#rabbitmq-queue-sync-step-1)
+ [Étape 2 : Redémarrer la synchronisation de la file d'attente](#rabbitmq-queue-sync-step-2)
+ [Étapes suivantes](#rabbitmq-queue-sync-next-steps)
+ [Ressources connexes](#rabbitmq-queue-sync-related-resources)

## Conditions préalables
<a name="rabbitmq-queue-sync-prerequisites"></a>

Pour ce didacticiel, vous devez disposer d'un utilisateur d'agent Amazon MQ for RabbitMQ avec les autorisations d'administrateur. Vous pouvez utiliser l'utilisateur administrateur créé lors de la création de l'agent pour la première fois, ou un autre utilisateur que vous avez créé par la suite. Le tableau suivant fournit la balise utilisateur administrateur et les autorisations nécessaires en tant que modèles d'expression régulière (regexp).


| Étiquettes | Lire regexp | Configurer regexp | Regexp en écriture | 
| --- | --- | --- | --- | 
| administrator | .\$1 | .\$1 | .\$1 | 

Pour plus d'informations sur la création d'utilisateurs RabbitMQ et la gestion de balises et autorisations utilisateur, consultez [Amazon MQ pour les utilisateurs du broker RabbitMQ](rabbitmq-simple-auth-broker-users.md#rabbitmq-basic-elements-user).

## Étape 1 : Appliquer une politique `ha-sync-batch-size`
<a name="rabbitmq-queue-sync-step-1"></a>

Les procédures suivantes illustrent l'ajout d'une politique qui s'applique à toutes les files d'attente créées sur l'agent. Vous pouvez utiliser la console web RabbitMQ ou l'API de gestion RabbitMQ. Pour plus d'informations, consultez [Plugin de gestion](https://www.rabbitmq.com/management.html) sur le site web RabbitMQ.

**Pour appliquer une politique `ha-sync-batch-size` à l'aide de la console web RabbitMQ**

1. Connectez-vous à la [console Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Dans le panneau de navigation de gauche, choisissez **Brokers (Agents)**.

1. Dans la liste des agents, choisissez le nom de l'agent auquel vous souhaitez appliquer la nouvelle politique.

1. Sur la page de l'agent, dans la section **Connection (Connexions)**, choisissez l'URL **RabbitMQ web console (Console web RabbitMQ)**. La console web RabbitMQ s'ouvre dans un nouvel onglet ou une nouvelle fenêtre du navigateur.

1. Connectez-vous à la console Web RabbitMQ à l'aide de vos informations d’identification de connexion d'administrateur d'agent.

1. Dans la console web RabbitMQ, en haut de la page, choisissez **Admin (Administrateur)**.

1. Dans la page **Admin (Administrateur)**, dans le volet de navigation droit, choisissez **Policies (Politiques)**.

1. Dans la page **Policies (Politiques)**, vous pouvez consulter la liste actuelle **User policies (Politiques utilisateur)** de l'agent. Sous **User policies (Politiques utilisateur)**, développez **Add/update a policy (Ajouter ou mettre à jour une politique)**.
**Note**  
Par défaut, les clusters Amazon MQ for RabbitMQ sont créés avec une politique d'agent initiale nommée `ha-all-AWS-OWNED-DO-NOT-DELETE`. Amazon MQ gère cette politique pour s'assurer que chaque file d'attente de l'agent est répliquée sur les trois nœuds et que les files d'attente sont synchronisées automatiquement.

1. Pour créer une politique d'agent, sous **Add/update a policy (Ajouter ou mettre à jour une politique)**, procédez comme suit :

   1. Dans **Name (Name)**, attribuez un nom à votre politique IAM, par exemple **batch-size-policy**.

   1. Pour **Pattern (Modèle)**, entrez le modèle regexp **.\$1** afin que la politique corresponde à toutes les files d'attente sur l'agent.

   1. Pour **Apply to (Appliquer à)**, choisissez **Exchanges and queues (Échanges et files d'attente)** dans la liste déroulante.

   1. Pour **Priority (Priorité)**, entrez un entier supérieur à toutes les autres politiques appliquées au vhost. Vous pouvez appliquer exactement un ensemble de définitions de politiques aux files d'attente et aux échanges RabbitMQ à tout moment. RabbitMQ choisit la politique correspondante avec la valeur de priorité la plus élevée. Pour plus d'informations sur les priorités de politique et sur la façon de combiner des politiques, veuillez consulter [Policies (Politiques)](https://www.rabbitmq.com/parameters.html#policies) dans la documentation du serveur RabbitMQ.

   1. Pour **Definition (Définition)**, ajoutez les paires clé-valeur suivantes :
      + **ha-sync-batch-size**=*100*. Choisissez **Numéro** dans la liste déroulante.
**Note**  
Vous devrez peut-être ajuster et calibrer la valeur de `ha-sync-batch-size` en fonction du nombre et de la taille des messages non synchronisés dans vos files d'attente.
      + **ha-mode**=**all**. Choisissez **String (Chaîne)** dans la liste déroulante.
**Important**  
La définition `ha-mode` est requise pour toutes les politiques relatives à la haute disponibilité. Son omission entraîne un échec de validation.
      + **ha-sync-mode**=**automatic**. Choisissez **String (Chaîne)** dans la liste déroulante.
**Note**  
La définition `ha-sync-mode` est requise pour toutes les politiques relatives à la haute disponibilité. Si elle est omise, Amazon MQ ajoute automatiquement la définition.

   1. Choisissez **Add / update policy (Ajouter/mettre à jour une politique)**.

1. Confirmez que la nouvelle politique apparaît dans la liste **User policies (Politiques utilisateur)**.

**Pour appliquer une politique `ha-sync-batch-size` à l'aide de l'API de gestion RabbitMQ**

1. Connectez-vous à la [console Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. Dans le panneau de navigation de gauche, choisissez **Brokers (Agents)**.

1. Dans la liste des agents, choisissez le nom de l'agent auquel vous souhaitez appliquer la nouvelle politique.

1. Sur la page de l'agent, dans la section **Connection (Connexion)**, notez l'URL de la **console web RabbitMQ**. Il s'agit du point de terminaison de l'agent que vous utilisez dans une requête HTTP.

1. Ouvrez une nouvelle fenêtre de terminal ou de ligne de commande.

1. Pour créer une politique d'agent, entrez la commande `curl` suivante. Cette commande suppose la présence d'une file d'attente sur le vhost `/` par défaut, qui est encodé en tant que `%2F`.
**Note**  
Remplacez *username* et par *password* les informations de connexion de l'administrateur de votre courtier. Vous devrez peut-être ajuster et calibrer la valeur de `ha-sync-batch-size` (*100*) en fonction du nombre et de la taille des messages non synchronisés dans vos files d'attente. Remplacez le point de terminaison de l'agent par l'URL que vous avez notée précédemment.

   ```
   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. Pour confirmer que la nouvelle politique est ajoutée aux politiques utilisateur de votre agent, entrez la commande `curl` suivante pour répertorier toutes les politiques de l'agent.

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

## Étape 2 : Redémarrer la synchronisation de la file d'attente
<a name="rabbitmq-queue-sync-step-2"></a>

Après avoir appliqué une nouvelle politique `ha-sync-batch-size` à votre agent, redémarrez la synchronisation de la file d'attente.

**Pour redémarrer la synchronisation de la file d'attente à l'aide de la console web RabbitMQ**
**Note**  
Pour ouvrir la console web RabbitMQ, reportez-vous aux instructions précédentes à l'étape 1 de ce didacticiel.

1. Dans la console web RabbitMQ, en haut de la page, choisissez **Queues (Fils d'attent)**.

1. Dans la page **Files d'attente (Queues)**, sous **All queues (Toutes les files d'attente)**, localisez votre file d'attente mise en pause. Dans la ligne **Politique**, votre file d'attente doit indiquer le nom de la nouvelle politique que vous avez créée (par exemple,`batch-size-policy`).

1. Pour redémarrer le processus de synchronisation avec une taille de lot réduite, annulez d'abord la synchronisation de la file d'attente. Redémarrez ensuite la synchronisation des files d'attente. 

**Note**  
Si la synchronisation s'interrompt et ne se termine pas correctement, essayez de réduire la valeur `ha-sync-batch-size` et de redémarrer la synchronisation de la file d'attente.

## Étapes suivantes
<a name="rabbitmq-queue-sync-next-steps"></a>
+ Une fois que votre file d'attente est correctement synchronisée, vous pouvez surveiller la quantité de mémoire utilisée par vos nœuds RabbitMQ en consultant la métrique Amazon. CloudWatch `RabbitMQMemUsed` Vous pouvez également afficher la métrique `RabbitMQMemLimit` pour surveiller la limite de mémoire d'un nœud. Pour plus d’informations, consultez [Accès aux CloudWatch métriques pour Amazon MQ](amazon-mq-accessing-metrics.md) et [CloudWatch Mesures disponibles pour Amazon MQ pour les courtiers RabbitMQ](rabbitmq-logging-monitoring.md).
+ Pour empêcher la synchronisation des files d'attente interrompues, nous vous recommandons de conserver les files d'attente courtes et de traiter les messages. Pour les applications ayant une taille de message plus grande, nous vous recommandons également de mettre à niveau votre type d'instance d'agent vers une taille d'instance plus grande avec plus de mémoire. Pour plus d'informations sur les types d'instances de courtier et sur la modification des préférences du courtier, consultez[Modification des préférences d'agent](amazon-mq-rabbitmq-editing-broker-preferences.md).
+  Lorsque vous créez un nouvel agent Amazon MQ for RabbitMQ, Amazon MQ applique un ensemble de politiques par défaut et de limites d'hôte virtuel pour optimiser les performances de l'agent. Si votre agent ne dispose pas des politiques et limites par défaut recommandées, nous vous recommandons de les créer vous-même. Pour plus d'informations sur la création de politiques par défaut et de limites de vhost, consultez [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). 

## Ressources connexes
<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)— Utilisez cette propriété de courtier pour mettre à jour un type d'instance de courtier à l'aide de l'API Amazon MQ.
+ [Paramètres et politiques](https://www.rabbitmq.com/parameters.html) (Documentation du serveur RabbitMQ) – Pour en savoir plus sur les paramètres et les politiques RabbitMQ, consultez le site web RabbitMQ.
+ [API HTTP de gestion RabbitMQ](https://pulse.mozilla.org/api/) – En savoir plus sur l'API de gestion RabbitMQ.