package rabbitmq.config; import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.support.converter.JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * * @author XiaoZhi * */ //@Configuration public abstract class AbstractDataRabbitConfiguration { //@Value("${ampq.hostName:localhost}") private String hostName = "localhost"; //@Value("${amqp.port:5672}") private int port = 5672; //@Value("${ampq.userName:guest}") private String userName = "guest"; //@Value("${ampa.password:guest}") private String password = "guest"; // protected void configureRabbitTemplate(RabbitTemplate rabbitTemplate){ // rabbitTemplate.setRoutingKey(routingKey); // } @Bean public ConnectionFactory connectionFactory() { //TODO make it possible to customize in subclasses. CachingConnectionFactory connectionFactory = new CachingConnectionFactory(hostName); connectionFactory.setUsername(userName); connectionFactory.setPassword(password); connectionFactory.setPort(port); return connectionFactory; } // @Bean // public RabbitTemplate rabbitTemplate() { // RabbitTemplate template = new RabbitTemplate(connectionFactory()); // template.setMessageConverter(jsonMessageConverter()); // configureRabbitTemplate(template); // return template; // } @Bean public MessageConverter jsonMessageConverter() { return new JsonMessageConverter(); } // @Bean // public FanoutExchange marketDataExchange() { // return new FanoutExchange(EXCHANGE_NAME); // } /** * @return the admin bean that can declare queues etc. */ @Bean public AmqpAdmin amqpAdmin() { RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory()); return rabbitAdmin ; } }