es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo desactivar un consumidor de Spring Cloud Stream Kafka

Aquí está mi situación:

Tenemos un servicio Spring cloud Stream 3 Kafka conectado a múltiples topics en el mismo broker, pero quiero controlar la conexión a un topic específico basado en propiedades.

Cada topic tiene su propio binder y binding, pero el broker es el mismo para todos.

Intenté desactivar el binding (esa fue la única solución que encontré hasta ahora) usando la propiedad de abajo, y eso funciona para que el StreamListener no reciba mensajes, pero la conexión al topic y el rebalanceo siguen ocurriendo.

spring:
  cloud:
    stream:
      bindings:
        ...
        anotherBinding:
          consumer:
            ...
            autostartup: false

Me pregunto si hay alguna configuración a nivel de binder que impida que se inicie. Uno de los consumidores de los topics solo debería estar disponible en uno de los entornos.

Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    ¡Gracias por ponerse en contacto con su pregunta! Parece que vas por buen camino desactivando la vinculación usando “autostartup: false” en la configuración del consumidor. Sin embargo, como mencionaste, esto solo evitará que los mensajes sean recibidos en el StreamListener.

    Si quieres evitar que el consumidor del tema se conecte al broker por completo, puedes usar una propiedad de configuración llamada “spring.cloud.stream.kafka.bindings.{bindingName}.consumer.autoRebalanceEnabled”. Configurar esta propiedad en “false” evitará que el consumidor participe en el reequilibrio, impidiendo efectivamente que se conecte al tema.

    Por ejemplo, si el nombre de tu vinculación es “anotherBinding”, puedes agregar lo siguiente a tu archivo application.yml:

    spring:
      cloud:
        stream:
          kafka:
            bindings:
              anotherBinding:
                consumer:
                  autoRebalanceEnabled: false
    

    Esto debería evitar que el consumidor del tema se conecte al broker en entornos donde no debería estar disponible.

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

Comments are closed.