@Configuration
public class RabbitMQConfig {
@Value("${spring.rabbitmq.addresses}")
private final String ADDRESSES=null;
@Value("${spring.rabbitmq.port}")
private int PORT=0;
@Value("${spring.rabbitmq.username}")
private final String USER_NAME=null;
@Value("${spring.rabbitmq.password}")
private final String PASS_WORD=null;
@Value("${spring.rabbitmq.virtual-host}")
private final String VIRTUAL_HOST=null;
@Value("${spring.rabbitmq.publisher-confirms}")
private final boolean PUBLISHER_CONFIRMS=false;
@Bean
TopicExchange exchange() {
return new TopicExchange(RabbitMQUtil.EXCHANGE_NAME);
}
@Bean
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMessageConverter(new Jackson2JsonMessageConverter());
return factory;
}
@Bean
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
RabbitTemplate template = new RabbitTemplate(connectionFactory);
template.setMessageConverter(new Jackson2JsonMessageConverter());
return template;
}
@Bean
// @ConfigurationProperties(prefix="spring.rabbitmq")
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(ADDRESSES);
connectionFactory.setPort(PORT);
connectionFactory.setUsername(USER_NAME);
connectionFactory.setPassword(PASS_WORD);
connectionFactory.setVirtualHost(VIRTUAL_HOST);
connectionFactory.setPublisherConfirms(PUBLISHER_CONFIRMS); //必须要设置
return connectionFactory;
}
}