How do I troubleshoot connection failures when a client first connects to the server?
What do I do if subscription relationships are inconsistent?
If a machine in a consumer group goes down, are messages lost during the restart?
What do I do if an online consumer does not consume messages but the group has message accumulation?
How do I view the retry details of ordered message consumption?
¿Cómo soluciono los fallos de conexión cuando un cliente se conecta al servidor por primera vez?
Compruebe que las siguientes configuraciones sean correctas:
Verifique que el endpoint se haya especificado correctamente. Puede obtener el endpoint en la página Instance Details de la consola de ApsaraMQ for RocketMQ.
-
Ejecute el comando telnet <Domain name in the endpoint> <Port number> para comprobar la conectividad de red.
Si su aplicación está desplegada en sus propias instalaciones, o si necesita acceso entre regiones y no puede usar Cloud Enterprise Network (CEN) para construir una red, utilice un endpoint público para acceder a la instancia de ApsaraMQ for RocketMQ. El uso de un endpoint público genera cargos por tráfico de salida. Para más información, consulte Public network access fees for 4.x series instances o Public network access fees for 5.x series instances.
Si su aplicación está desplegada en una instancia de Elastic Compute Service (ECS) de Alibaba Cloud, utilice un endpoint de VPC para acceder a la instancia de ApsaraMQ for RocketMQ a través de una nube privada virtual (VPC). En este escenario, asegúrese de que la instancia de ECS se encuentre en la misma región que la instancia de ApsaraMQ for RocketMQ.
Para instancias de la serie 5.0 con acceso a red pública habilitado, confirme si hay una lista de permitidos configurada. De forma predeterminada, el acceso a red pública permite conexiones desde todas las direcciones IP. Si se configura una lista de permitidos, solo las direcciones IP incluidas en ella podrán acceder a ApsaraMQ for RocketMQ.
Verifique que el nombre del tema sea correcto. Asegúrese de que el nombre no contenga espacios adicionales ni caracteres especiales, y de que el tema se haya creado en la consola.
-
Compruebe que el nombre de usuario y la contraseña sean correctos.
Para instancias de la serie 5.0, introduzca el nombre de usuario y la contraseña de la instancia. Puede obtenerlos en la página de detalles de la instancia en la consola.
Para instancias de la serie 4.0, introduzca el AccessKey ID y el AccessKey secret de una cuenta de Alibaba Cloud o de un usuario de Resource Access Management (RAM). Asegúrese de que el usuario tenga los permisos obligatorios. Para obtener un par de AccessKey, consulte Create an AccessKey.
¿Qué hago si las relaciones de suscripción son inconsistentes?
Inicie sesión en la consola, vaya a la página Groups y consulte las relaciones de suscripción y la información del consumidor para el grupo especificado. Modifique el código de suscripción de los consumidores con relaciones inconsistentes para garantizar que sean uniformes.
Para conocer los pasos detallados de solución de problemas, consulte How do I troubleshoot inconsistent subscription relationships in ApsaraMQ for RocketMQ?.
¿Cómo gestiono la acumulación de mensajes?
La acumulación de mensajes puede deberse a las siguientes razones:
La lógica de procesamiento de mensajes del consumidor presenta anomalías, lo que impide que los mensajes se consuman.
La aplicación productora de mensajes experimenta un pico de tráfico. La tasa de producción de mensajes supera considerablemente la tasa de consumo, lo que provoca la acumulación.
Los servicios descendientes de los que depende el consumidor presentan tiempos de respuesta elevados, lo que bloquea los hilos de consumo.
El número de hilos de consumo es insuficiente. La baja concurrencia en el consumo hace que la tasa de consumo quede rezagada respecto a la tasa de producción.
Revise los registros del cliente o la información de la pila para determinar la causa de la excepción. Para más información, consulte How to handle message accumulation.
¿Qué hago si un consumidor no puede consumir mensajes?
Inicie sesión en ApsaraMQ for RocketMQ console y vaya a la página Groups. Compruebe que el consumidor esté en línea y que la conexión del cliente sea normal. Si el cliente no está conectado, revise sus registros para identificar y corregir el error.
Verifique que las relaciones de suscripción sean consistentes. Si no lo son, localice el cliente consumidor según los detalles de la relación de suscripción y modifique el código de suscripción de mensajes del cliente.
Si una máquina de un grupo de consumidores se cae, ¿se pierden mensajes durante el reinicio?
No, no se pierden. ApsaraMQ for RocketMQ utiliza suscripciones persistentes. Los mensajes no se pierden si un grupo de consumidores se desconecta o si ocurre una excepción de consumo. Cuando el cliente consumidor vuelve a estar en línea, reanuda el consumo desde el desplazamiento donde lo dejó.
¿Puede estar vacía la etiqueta de mensaje al suscribirse a mensajes?
No. Si establece una etiqueta vacía al suscribirse a mensajes, el consumidor no recibirá ningún mensaje. Para suscribirse a todos los mensajes de un tema, establezca la etiqueta como *. El siguiente código de ejemplo muestra cómo hacerlo:
String topic = "Your Topic";
// Use a tag to filter messages. This subscribes to all messages.
FilterExpression filterExpression = new FilterExpression("*", FilterExpressionType.TAG);
pushConsumer.subscribe(topic, filterExpression);
Para más información, consulte Tag-based filtering.
¿Cómo establezco el desplazamiento inicial del consumidor al crear un nuevo grupo de consumidores para suscribirse a un tema existente?
No es posible establecer el desplazamiento inicial del consumidor al crear un grupo de consumidores. De forma predeterminada, cuando un consumidor se inicia por primera vez, comienza a consumir desde el mensaje más antiguo del tema, independientemente de si se suscribe a un tema nuevo o existente.
Después de que el consumidor se inicie por primera vez, puede restablecer el desplazamiento del consumidor en la consola de ApsaraMQ for RocketMQ. Para más información, consulte Reset a consumer offset.
¿Qué hago si un consumidor en línea no consume mensajes pero el grupo tiene acumulación de mensajes?
Revise el método de suscripción que utiliza el grupo de consumidores para el tema. Si el consumidor se suscribe al tema mediante filtrado de mensajes, aquellos que no coincidan con las condiciones del filtro se contarán como acumulados. Este comportamiento es esperado. Para más información, consulte Message filtering.
Si utiliza filtrado basado en SQL o etiquetas y el grupo presenta acumulación de mensajes aunque no se esté consumiendo ninguno, el número de mensajes acumulados se calcula de la siguiente manera.

Filtrado SQL: Número de mensajes acumulados = Número de mensajes listos + Número de mensajes en tránsito - Número de mensajes que no cumplen las condiciones de filtrado
Filtrado basado en etiquetas: Número de mensajes acumulados = (Número de mensajes listos + Número de mensajes en tránsito) × Porcentaje de mensajes que coinciden con las etiquetas
Porcentaje de mensajes que coinciden con las etiquetas = Número de mensajes que coinciden con las etiquetas en la muestra / Número total de mensajes muestreados
¿Qué hago si el panel muestra una gran acumulación de mensajes, pero estos ya se consumieron en el lado del consumidor?
Este problema puede ocurrir si utiliza un kit de desarrollo de software (SDK) con protocolo Remoting y configura el modo de consumo como difusión en el consumidor. El lado del servidor determina la acumulación de mensajes basándose en la información del desplazamiento del consumidor. Sin embargo, en el modo de consumo por difusión, los desplazamientos se mantienen en el cliente. Como resultado, el panel podría mostrar incorrectamente una acumulación de mensajes.
Además, si el consumidor utiliza filtrado basado en etiquetas o SQL, los mensajes que no coincidan con las condiciones del filtro se considerarán acumulados.
¿Cómo consulto los detalles de reintento del consumo de mensajes ordenados?
Los reintentos de consumo de mensajes ordenados se ejecutan localmente en el cliente consumidor. Por lo tanto, no es posible consultar la información específica de reintento desde el seguimiento de mensajes en el lado del servidor.
Puede consultar información detallada sobre los reintentos en los registros del cliente. Se pueden utilizar las siguientes palabras clave de registro:
RocketMQ Remoting SDK:
consumeMessage exception: {} Group: {} Msgs: {} MQ: {}consumeMessage Orderly return not OK, Group: {} Msgs: {} MQ: {}
RocketMQ gRPC SDK:
Prepare to redeliver the fifo message because of the consumption failure, maxAttempt={}, attempt={}, mq={}, messageId={}, nextAttemptDelay={}, clientId={}