Dudas sobre la relación consistente entre GID y suscripción a Topic en el ONS

Tabla de contenido

concepto basico

pregunta

respuesta

Resumir


concepto basico

pregunta

En el servicio de cola de mensajes (RocketMQ) proporcionado por Alibaba Cloud Services, se brinda una mejor práctica sobre una relación de suscripción consistente, y se señala en el documento que todas las instancias de consumidores en el mismo ID de grupo son mejores para suscribirse al mismo Tema + Etiqueta . Esto me hace tener algunas dudas, por qué un GroupID solo puede generar un tipo de suscripción, de modo que la misma aplicación necesita suscribirse a diferentes temas, y cada vez que necesita solicitar un GroupID, lo que hace que GroupID y Topic tengan un cierto relación de acoplamiento, parece irrazonable, entonces, ¿por qué RocketMQ hace esto?

respuesta

Después de leer el código fuente, encontré una parte de la respuesta a esta pregunta.

Si diferentes instancias de consumidores bajo el mismo ID de grupo se suscriben a diferentes Temas+Etiquetas, se generarán resultados incorrectos cuando las colas de consumo del tema se equilibren y eventualmente se perderán los mensajes.

Hay una clase llamada Reequilibrar en el lado del cliente del consumidor, que equilibra periódicamente la cola de consumo del consumidor y el tema suscrito (similar a la partición de Kafka). En el proceso de equilibrio de carga, debe usar el método mqClientFactory.findConsumerIdList(topic,consumerGroup) para obtener todos los ID de cliente que se suscriben a este tema bajo este GroupId.

Al ver este lugar, hay algunas dudas ¿Cómo puede haber problemas al nombrar el ClientID basado en GroupID y Topic como parámetros? sigue leyendo


Podemos ver que el método findConsumerIdList no continúa transmitiendo el tema, sino que solo usa el tema como un parámetro para obtener la dirección del intermediario, y no transmite el tema en el método para obtener el ID de cliente después. Esto hará que la llamada devuelva todas las instancias de consumidor bajo el ID de grupo actual, independientemente de si el consumidor se ha suscrito al tema actual. El ClientID devuelto participará en el equilibrio de carga de los pares de consumo del tema actual. Si la instancia de consumidor que no se suscribe al tema se asigna a la cola de mensajes, el consumo de mensajes en la cola de consumo fallará.

 

Resumir

Por lo tanto, cuando recibe un nuevo tema, debe solicitar un nuevo GID. De lo contrario, el consumo en el entorno de desarrollo local puede fallar.

 

Acho que você gosta

Origin blog.csdn.net/lan861698789/article/details/112165708
Recomendado
Clasificación