reactive-commons-java icon indicating copy to clipboard operation
reactive-commons-java copied to clipboard

Acerca de Reactive Commons y Secretos AWS Secrets Manager

Open joaaguir opened this issue 2 years ago • 1 comments

Al usar la librería y hacer la implementación con el Broker MQ, encuentro documentacion de como configurar el MQ a traves del application.yaml. image

Pero si se necesita que ese usuario y contraseña vayan en un secreto en AWS Secrets Manager no veo documentación de como implementarlo con el Reactive Commons, existe alguna interfaz para configurar la conexión al MQ programaticamente? o es necesario evolucionar el Reactive Commons con esta funcionalidad?

joaaguir avatar Jul 19 '22 14:07 joaaguir

Hola @JorgeAlejandroAguirre puedes lograrlo de la siguiente manera:


    @Bean
    @Primary
    public ConnectionFactoryProvider connection(RabbitConnectionProperties properties) {
        final ConnectionFactory factory = new ConnectionFactory();
        PropertyMapper map = PropertyMapper.get();
        map.from(properties::getHostname).whenNonNull().to(factory::setHost);
        map.from(properties::getPort).to(factory::setPort);
        map.from(properties::getUsername).whenNonNull().to(factory::setUsername);
        map.from(properties::getPassword).whenNonNull().to(factory::setPassword);
        map.from(properties::getVirtualhost).whenNonNull().to(factory::setVirtualHost);
        map.from(properties::isSsl).whenTrue().as(ssl -> factory).to(this::configureSsl);
        return () -> factory;
    }

    @SneakyThrows
    private void configureSsl(ConnectionFactory connectionFactory) {
        connectionFactory.useSslProtocol();
    }

Donde RabbitConnectionProperties es un DTO con las propiedades de la conexión, el cual podrías construir a partir de un secreto.

juancgalvis avatar Jul 19 '22 14:07 juancgalvis