package cf.dropsonde.spring.boot; import cf.dropsonde.metron.MetronClient; import cf.dropsonde.metron.MetronClientBuilder; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.nio.NioDatagramChannel; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import java.net.InetSocketAddress; @Configuration @EnableConfigurationProperties(MetronClientProperties.class) public class MetronClientConfiguration { @Bean public MetronClient metronClient(MetronClientProperties properties) { return MetronClientBuilder .create(properties.getOrigin()) .metronAgent(new InetSocketAddress(properties.getMetronAgentHost(), properties.getMetronAgentPort())) .eventLoopGroup(metronEventLoopGroup(), NioDatagramChannel.class) .build(); } @Bean(destroyMethod = "shutdownGracefully") @Lazy @Qualifier("cf.dropsonde") EventLoopGroup metronEventLoopGroup() { return new NioEventLoopGroup(); } }