

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Resolver la sincronización de colas en pausa de RabbitMQ
<a name="rabbitmq-queue-sync"></a>

En una [implementación de clúster](rabbitmq-broker-architecture.md#rabbitmq-broker-architecture-cluster) de Amazon MQ para RabbitMQ, los mensajes publicados en cada cola se replican en tres nodos de agente. Esta replicación, conocida como *espejo*, proporciona alta disponibilidad para los agentes de RabbitMQ. En una implementación de clúster, las colas constan de un nodo *principal* y una o más *réplicas*. Cada operación aplicada a una cola replicada, incluidos los mensajes en cola, se aplica primero a la cola principal y, a continuación, se replica en sus espejos.

Por ejemplo, considere una cola replicada en tres nodos: el nodo principal (`main`) y dos espejos (`mirror-1` y `mirror-2`). Si todos los mensajes de esta cola replicada se propagan correctamente a todos los espejos, la cola se sincroniza. Si un nodo (`mirror-1`) deja de estar disponible durante un intervalo de tiempo, la cola sigue funcionando y puede continuar poniendo mensajes en cola. Sin embargo, para que la cola se sincronice, los mensajes publicados en `main` mientras `mirror-1` no está disponible deben replicarse en `mirror-1`.

Para obtener más información acerca de la replicación, consulte el tema sobre [Colas replicadas clásicas](https://www.rabbitmq.com/ha.html) en el sitio web de RabbitMQ.

**Mantenimiento y sincronización de colas**

Durante los [periodos de mantenimiento](amazon-mq-rabbitmq-editing-broker-preferences.md#rabbitmq-edit-current-configuration-console), Amazon MQ realiza todos los trabajos de mantenimiento de a un nodo por vez para garantizar que el agente permanezca operativo. Como resultado, es posible que las colas deban sincronizarse a medida que cada se vaya reanudando la operación de cada nodo. Durante la sincronización, los mensajes que deben replicarse en los espejos se cargan en la memoria del volumen correspondiente de Amazon Elastic Block Store (Amazon EBS) para procesarlos en lotes. El procesamiento de mensajes en lotes permite agilizar la sincronización de las colas.

Si las colas se mantienen cortas y los mensajes son pequeños, las colas se sincronizan correctamente y reanudan la operación según lo previsto. Sin embargo, si la cantidad de datos de un lote se acerca al límite de memoria del nodo, el nodo genera una alarma de memoria elevada y se pausa la sincronización de colas. Puede confirmar el uso de la memoria comparando las [métricas del `RabbitMemUsed` nodo `RabbitMqMemLimit` intermediario con las del nodo intermediario CloudWatch](amazon-mq-accessing-metrics.md). La sincronización no se puede completar hasta que se consuman o eliminen los mensajes, o se reduzca el número de mensajes del lote.

**nota**  
La reducción del tamaño del lote de sincronización de colas puede generar mayor número de transacciones de replicación.

Para resolver una sincronización de colas en pausa, siga los pasos que se indican en este tutorial, que muestra la aplicación de una política `ha-sync-batch-size` y reinicio de la sincronización de colas.

**Topics**
+ [Requisitos previos](#rabbitmq-queue-sync-prerequisites)
+ [Paso 1: Aplicar una política `ha-sync-batch-size`](#rabbitmq-queue-sync-step-1)
+ [Paso 2: Reiniciar la sincronización de colas](#rabbitmq-queue-sync-step-2)
+ [Siguientes pasos](#rabbitmq-queue-sync-next-steps)
+ [Recursos relacionados](#rabbitmq-queue-sync-related-resources)

## Requisitos previos
<a name="rabbitmq-queue-sync-prerequisites"></a>

Para este tutorial, debe tener un usuario de agente de Amazon MQ para RabbitMQ con permisos de administrador. Puede utilizar el usuario administrador que generó cuando creó el agente por primera vez, u otro usuario que podría haber creado después. La siguiente tabla proporciona la etiqueta y los permisos de usuario administrador necesarios como patrones de expresiones regulares (regexp).


| Tags | Regexp Read (Lectura) | Regexp Configure (Configuración) | Regexp Write (Escritura) | 
| --- | --- | --- | --- | 
| administrator | .\$1 | .\$1 | .\$1 | 

Para obtener más información acerca de cómo crear usuarios de RabbitMQ y administrar etiquetas y permisos de usuario, consulte [Usuarios de agentes de Amazon MQ para RabbitMQ.](rabbitmq-simple-auth-broker-users.md#rabbitmq-basic-elements-user).

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

Estos procedimientos se utilizan para agregar una política que se aplica a todas las colas creadas en el agente. Puede utilizar la consola web o la API de administración de RabbitMQ. Para obtener más información, consulte [Complemento de administración](https://www.rabbitmq.com/management.html) en el sitio web de RabbitMQ.

**Para aplicar una política `ha-sync-batch-size` a través de la consola web de RabbitMQ**

1. Inicie sesión en la [consola de Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. En el panel de navegación izquierdo, elija **Brokers** (Agentes).

1. En la lista de agentes, elija el nombre del agente al que desea aplicar la nueva política.

1. En la sección **Connections** (Conexiones) de la página del agente, elija la URL de la **consola web de RabbitMQ**. La consola web de RabbitMQ se abre en una nueva pestaña o ventana del navegador.

1. Inicie sesión en la consola web de RabbitMQ con las credenciales del usuario administrador del agente.

1. En la consola web de RabbitMQ, elija **Admin** (Administrador) en la parte superior de la página.

1. En la página **Admin** (Administrador), elija **Politicies** (Políticas) en el panel de navegación derecho.

1. En la página **Políticies** (Políticas), puede ver una lista de las **Políticas de usuario** actuales del agente. Debajo de las **políticas de usuario**, expanda **Add/update a policy** (Agregar/actualizar una política).
**nota**  
De forma predeterminada, los clústeres de Amazon MQ para RabbitMQ se crean con una política de agente inicial con el nombre `ha-all-AWS-OWNED-DO-NOT-DELETE`. Amazon MQ administra esta política para garantizar que todas las colas del agente se repliquen en los tres nodos y que las colas se sincronicen automáticamente.

1. Para crear una nueva política de agente, en **Add/update a policy** (Agregar/actualizar una política), haga lo siguiente:

   1. En **Name** (Nombre), escriba un nombre para su política, por ejemplo, **batch-size-policy**.

   1. En **Pattern** (Patrón), ingrese el patrón regexp **.\$1** para que la política coincida con todas las colas del agente.

   1. En **Apply to** (Aplicar a), elija **Exchanges and queues** (Intercambios y colas) en el menú desplegable.

   1. En **Priority** (Prioridad), ingrese un número entero mayor que todas las demás políticas aplicadas al vhost. Puede aplicar exactamente un conjunto de definiciones de políticas a las colas e intercambios de RabbitMQ en cualquier momento dado. RabbitMQ elige la política de coincidencia con el valor de prioridad más alto. Para obtener más información acerca de las prioridades de las políticas y cómo combinar políticas, consulte el tema sobre [políticas](https://www.rabbitmq.com/parameters.html#policies) en la documentación del servidor de RabbitMQ.

   1. En **Definition** (Definición), agregue los siguientes pares clave-valor:
      + **ha-sync-batch-size**=*100*. Elija **Número** en la lista desplegable.
**nota**  
Es posible que deba ajustar y calibrar el valor de `ha-sync-batch-size` en función del número y el tamaño de los mensajes sin sincronizar de las colas.
      + **ha-mode**=**all**. Elija **String** (Cadena) en el menú desplegable.
**importante**  
Se requiere la definición `ha-mode` para todas las políticas relacionadas con la alta disponibilidad. Si se omite, se produce un error de validación.
      + **ha-sync-mode**=**automatic**. Elija **String** (Cadena) en el menú desplegable.
**nota**  
Se requiere la definición `ha-sync-mode` para todas las políticas personalizadas. Si se omite, Amazon MQ la agrega automáticamente.

   1. Elija **Add/update policy** (Agregar/actualizar política).

1. Confirme que la nueva política aparezca en la lista de **políticas de usuario**.

**Para aplicar una política `ha-sync-batch-size` a través de la API de administración de RabbitMQ**

1. Inicie sesión en la [consola de Amazon MQ](https://console.aws.amazon.com/amazon-mq/).

1. En el panel de navegación izquierdo, elija **Brokers** (Agentes).

1. En la lista de agentes, elija el nombre del agente al que desea aplicar la nueva política.

1. En la sección **Connections** (Conexiones) de la página del agente, anote la URL de la **consola web de RabbitMQ**. Este es el punto de enlace del agente que se utiliza en una solicitud HTTP.

1. Abra un terminal nuevo o la ventana de línea de comandos que desee.

1. Para crear una nueva política de agente, ingrese el comando `curl`. Este comando asume que hay una cola en el vhost `/` predeterminado, que está codificado como `%2F`.
**nota**  
Sustituya *username* y por *password* las credenciales de inicio de sesión de administrador de su corredor. Puede que tengas que ajustar y calibrar el valor de `ha-sync-batch-size` (*100*) en función del número y el tamaño de los mensajes no sincronizados de tus colas. Reemplace el punto de enlace del agente por la URL que anotó 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 que se haya agregado la nueva política a las políticas de usuario de su agente, ingrese el comando `curl` para ver una lista de todas las políticas de agente.

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

## Paso 2: Reiniciar la sincronización de colas
<a name="rabbitmq-queue-sync-step-2"></a>

Después de aplicar una nueva política `ha-sync-batch-size` a su agente, reinicie la sincronización de colas.

**Para reiniciar la sincronización de colas a través de la consola web de RabbitMQ**
**nota**  
Para abrir la consola web de RabbitMQ, consulte las instrucciones anteriores en el paso 1 de este tutorial.

1. En la consola web de RabbitMQ, en la parte superior de la página, elija **Queues** (Colas).

1. En la página **Queues** (Colas), en **All queues** (Todas las colas), busque la cola en pausa. En la fila **Policy** (Política), la cola debe mostrar el nombre de la nueva política que ha creado (por ejemplo, `batch-size-policy`).

1. Para reiniciar el proceso de sincronización con un tamaño de lote reducido, primero cancele la sincronización de la cola. A continuación, reinicie la sincronización de colas. 

**nota**  
Si la sincronización se detiene y no se completa correctamente, intente reducir el valor de `ha-sync-batch-size` y volver a reiniciar la sincronización de colas.

## Siguientes pasos
<a name="rabbitmq-queue-sync-next-steps"></a>
+ Una vez que la cola se sincronice correctamente, puede controlar la cantidad de memoria que utilizan sus nodos de RabbitMQ consultando la métrica de Amazon. CloudWatch `RabbitMQMemUsed` También puede consultar la métrica `RabbitMQMemLimit` para monitorear el límite de memoria de un nodo. Para obtener más información, consulte [Acceso a CloudWatch las métricas de Amazon MQ](amazon-mq-accessing-metrics.md) y [CloudWatch Métricas disponibles de Amazon MQ para corredores de RabbitMQ](rabbitmq-logging-monitoring.md).
+ Para evitar la sincronización de colas en pausa, recomendamos mantener las colas cortas y procesar mensajes. Para cargas de trabajo con tamaños de mensaje más grandes, también recomendamos actualizar el tipo de instancias del agente a un tamaño de instancia más grande con más memoria. Para obtener más información sobre los tipos de instancias y la edición de preferencias del agente, consulte [Edición de las preferencias del agente](amazon-mq-rabbitmq-editing-broker-preferences.md).
+  Cuando crea un nuevo agente de Amazon MQ para RabbitMQ, Amazon MQ aplica un conjunto de políticas y límites de anfitriones virtuales predeterminados para optimizar el rendimiento del agente. Si su agente no tiene las políticas y los límites predeterminados recomendados, le recomendamos que los cree usted mismo. Para obtener más información acerca de cómo crear políticas y límites de vhost predeterminados, 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)— Utilice esta propiedad de agente para actualizar un tipo de instancia de agente mediante la API Amazon MQ.
+ [Parámetros y políticas](https://www.rabbitmq.com/parameters.html)(Documentación del servidor de RabbitMQ): obtenga más información acerca de los parámetros y las políticas de RabbitMQ en el sitio web de RabbitMQ.
+ [API HTTP de administración de RabbitMQ](https://pulse.mozilla.org/api/): obtenga más información acerca de la API de administración de RabbitMQ.