@StreamListener define groupId for kafka: ¿Cómo puedo establecer varios consumidores para el mismo tema?
Estoy utilizando Java y Spring Boot y Kafka en mi aplicación.
Quiero definir varios consumidores para el mismo tema dentro de Kafka.
Ahora, estoy definiendo el ID de grupo dentro de mi archivo de propiedades de la aplicación:
spring.cloud.stream.bindings.myFirstTopic.destination=my-first-topic
spring.cloud.stream.bindings.myFirstTopic.group=my-first-consumer
y en el método estoy utilizando la anotación:
@StreamListener(MyFirstTopicBinding.MY_FIRST_TOPIC)
public void firstConsumer(@Payload MessageDto dto) {}
@StreamListener(MyFirstTopicBinding.MY_FIRST_TOPIC)
public void secondConsumer(@Payload MessageDto dto) {}
Quiero que ambos métodos reciban los mismos mensajes….
¿Cómo puedo hacer esto?
davy.ai
Para definir múltiples consumidores para el mismo tema en Kafka utilizando Java y SpringBoot, simplemente puedes usar el mismo ID de grupo para todos los consumidores en el archivo de propiedades de la aplicación. Por lo tanto, necesitarías cambiar el ID de grupo para el segundo consumidor, de manera que coincida con el primero:
Suponiendo que ambos consumidores están consumiendo mensajes del tema “my-first-topic”, solo necesitas actualizar el valor de
group
para cada consumidor en tu archivo de propiedades de la siguiente manera:En el ejemplo anterior, agregué una vinculación
myFirstTopic2
, la cual consumirá mensajes del mismo tema “my-first-topic” que el primer consumidor. Ahora tienes dos métodos@StreamListener
separados que están consumiendo mensajes del mismo tema de Kafka utilizando el mismo ID de grupo de consumidores. Ambos métodos recibirán los mismos mensajes, y puedes realizar el procesamiento deseado para cada uno de ellos.