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 las métricas de CloudWatch para KPL/KCL con Spring Cloud Stream.

Estoy usando Spring Cloud Stream Binder para Kinesis con KPL/KCL habilitado. Nos gustaría desactivar las métricas de Cloudwatch sin tener que manejar la configuración de KPL y KCL nosotros mismos (anulando completamente los beans). Nos gustaría utilizar la misma definición de bean para la KinesisProducerConfiguration y cada una de las KinesisClientLibConfiguration, excepto las propiedades KinesisProducerConfiguration.setMetricsLevel() y KinesisClientLibConfiguration.withMetricsLevel(…).

Para referencia, aquí es donde se definen los beans de AWS en el enlace Spring Cloud Stream Kinesis Binder: KinesisBinderConfiguration.java.

¿Cuál sería la forma más efectiva de hacer esto?

¡Cualquier ayuda es apreciada! Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para desactivar las métricas de CloudWatch para Spring Cloud Stream Binder para Kinesis con KPL/KCL habilitado sin tener que administrar la configuración de KPL y KCL, puedes crear una nueva definición de bean para KinesisProducerConfiguration y KinesisClientLibConfiguration. En la definición del bean, puedes sobrescribir las propiedades KinesisProducerConfiguration.setMetricsLevel() y KinesisClientLibConfiguration.withMetricsLevel(...) para desactivar las métricas. Aquí tienes un ejemplo de definición de bean:

    @Configuration
    public class MyKinesisConfiguration {
    
        @Autowired
        private KinesisBinderConfigurationProperties kinesisBinderConfigurationProperties;
    
        @Bean
        public KinesisAsyncClient kinesisAsyncClient() {
            return KinesisAsyncClient.builder()
                .region(Region.of(kinesisBinderConfigurationProperties.getRegion()))
                .build();
        }
    
        @Bean
        public KinesisProducerConfigurationFactoryBean kinesisProducerConfiguration() {
            KinesisProducerConfigurationFactoryBean factoryBean = 
                new KinesisProducerConfigurationFactoryBean();
            factoryBean.setMetricsLevel(MetricsLevel.NONE);
            return factoryBean;
        }
    
        @Bean
        public KinesisClientLibConfigurationFactoryBean kinesisClientLibConfiguration() {
            KinesisClientLibConfigurationFactoryBean factoryBean = 
                new KinesisClientLibConfigurationFactoryBean();
            factoryBean.withMetricsLevel(MetricsLevel.NONE);
            return factoryBean;
        }
    
        @Bean
        public KinesisMessageChannelBinder kinesisMessageChannelBinder(
            KinesisAsyncClient kinesisAsyncClient, 
            KinesisProducerConfiguration kinesisProducerConfiguration,
            KinesisClientLibConfiguration kinesisClientLibConfiguration
        ) {
            return new KinesisMessageChannelBinder(
                kinesisAsyncClient, 
                kinesisBinderConfigurationProperties, 
                kinesisProducerConfiguration, 
                kinesisClientLibConfiguration
            );
        }
    
    }
    

    Esta configuración define nuevas definiciones de bean para KinesisProducerConfigurationFactoryBean y KinesisClientLibConfigurationFactoryBean, que sobrescriben la propiedad metricsLevel a MetricsLevel.NONE. Al utilizar estas nuevas definiciones de bean, puedes mantener la misma definición de bean para KinesisProducerConfiguration y cada una de las KinesisClientLibConfiguration excepto la propiedad de nivel de métricas.

    Ten en cuenta que también definimos un nuevo bean de KinesisAsyncClient para especificar la región. Puedes personalizar esto según tus necesidades.

    ¡Espero que esto te ayude!

Comments are closed.