package com.xiaozhi.blog.rabbitmq.config; import org.springframework.amqp.core.AmqpAdmin; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.TopicExchange; 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.rabbit.core.RabbitTemplate; import org.springframework.amqp.support.converter.JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * * @author XiaoZhi * */ //@Configuration public abstract class AbstractUserDataRabbitConfiguration { @Value("${ampq.hostName:localhost}") private String hostName; @Value("${amqp.port:5672}") private int port = 5672; @Value("${ampq.userName:guest}") private String userName; @Value("${ampa.password:guest}") private String password; // @Value("${basic.data.routing.key:user.basic.data.queue}") // private String routingKey; protected static String routingKey = "user.basic.data.queue.key"; protected static String EXCHANGE_NAME = "user.basic.data.exchange"; protected void configureRabbitTemplate(RabbitTemplate rabbitTemplate){ //rabbitTemplate.setRoutingKey(routingKey); } @Bean public ConnectionFactory connectionFactory() { 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()); //template.setChannelTransacted(true); configureRabbitTemplate(template); return template; } @Bean public MessageConverter jsonMessageConverter() { return new JsonMessageConverter(); } // @Bean // public TopicExchange marketDataExchange() { // return new TopicExchange(EXCHANGE_NAME); // } @Bean public DirectExchange marketDataExchange() { return new DirectExchange(EXCHANGE_NAME); } /** * @return the admin bean that can declare queues etc. */ @Bean public AmqpAdmin amqpAdmin() { RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory()); return rabbitAdmin ; } }