package ftp.installer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.amqp.core.*; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowCallbackHandler; @SpringBootApplication public class Application { private Log log = LogFactory.getLog(getClass()); public static void main(String[] args) throws Throwable { SpringApplication.run(Application.class, args); } @Bean CommandLineRunner runner(AnnotationConfigApplicationContext configApplicationContext, JdbcTemplate template) { return args -> { template.query("select USERNAME from FTP_USER", (RowCallbackHandler) resultSet -> log.info(String.format("ftp_user row: %s", resultSet.getString("USERNAME")))); configApplicationContext.destroy(); }; } @Bean InitializingBean prepareQueues(@Value("${ftp.amqp.requests}") String ftpRequests, AmqpAdmin amqpAdmin) { return () -> { Queue queue = new Queue(ftpRequests, true); DirectExchange exchange = new DirectExchange(ftpRequests); Binding binding = BindingBuilder.bind(queue).to(exchange).with( ftpRequests); amqpAdmin.declareQueue(queue); amqpAdmin.declareExchange(exchange); amqpAdmin.declareBinding(binding); }; } }