62 lines
2.3 KiB
Java
62 lines
2.3 KiB
Java
package com.xwbing.rabbit;
|
|
|
|
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
|
|
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
|
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Scope;
|
|
|
|
/**
|
|
* 项目名称: boot-module-demo
|
|
* 创建时间: 2018/4/27 13:42
|
|
* 作者: xiangwb
|
|
* 说明: 配置类
|
|
*/
|
|
@Configuration
|
|
public class RabbitConfig {
|
|
@Value("${spring.rabbitmq.host}")
|
|
private String host;
|
|
@Value("${spring.rabbitmq.port}")
|
|
private String port;
|
|
@Value("${spring.rabbitmq.username}")
|
|
private String username;
|
|
@Value("${spring.rabbitmq.password}")
|
|
private String password;
|
|
@Value("${spring.rabbitmq.virtual-host}")
|
|
private String virtualHost;
|
|
@Value("${spring.rabbitmq.connection-timeout}")
|
|
private int timeout;
|
|
@Value("${spring.rabbitmq.publisher-confirms}")
|
|
private boolean publisherConfirms;
|
|
@Value("${spring.rabbitmq.publisher-returns}")
|
|
private boolean publisherReturns;
|
|
|
|
@Bean
|
|
public ConnectionFactory connectionFactory() {
|
|
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
|
|
connectionFactory.setAddresses(host + ":" + port);
|
|
connectionFactory.setUsername(username);
|
|
connectionFactory.setPassword(password);
|
|
connectionFactory.setVirtualHost(virtualHost);
|
|
connectionFactory.setConnectionTimeout(timeout);
|
|
//如果要进行消息回调,则这里必须要设置为true
|
|
connectionFactory.setPublisherConfirms(publisherConfirms);
|
|
connectionFactory.setPublisherReturns(publisherReturns);
|
|
return connectionFactory;
|
|
}
|
|
|
|
/**
|
|
* 因为要设置回调类,所以应是prototype类型,如果是singleton类型,则回调类为最后一次设置
|
|
*/
|
|
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
|
@Bean
|
|
public RabbitTemplate rabbitTemplate() {
|
|
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory());
|
|
rabbitTemplate.setMandatory(true);
|
|
return rabbitTemplate;
|
|
}
|
|
}
|