您的位置:首页 > 编程语言 > Java开发

SpringBoot--整合RabbitMq

2017-11-19 15:10 573 查看
1 Spring Boot对RabbitMQ的使用做了自动配置,更加的简化了我们的使用。

添加依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>


在application.properties文件中配置RabbitMQ的连接信息:

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=tangtang
spring.rabbitmq.password=123123
spring.rabbitmq.virtual-host=/tang


会自动创建连接org.springframework.amqp.rabbit.connection.ConnectionFactory对象。

注入到想要的位置。

/**
* RabbitMq配置中心,由SpringBoot提供的相关包自动整合
*
* @author Tang 2017年11月19日
*/
@Configuration
@PropertySource(value = "classpath:rabbitmq.properties")
public class RabbitMqConfig {

private final String QUEUE_NAME = "RABBITMQ-TEXT-QUEUE";

/**
* 在全局配置中按要求配置,会自动将连接注入到这里
*/
@Autowired
private ConnectionFactory connectionFactory;

// 管理
@Bean
public RabbitAdmin rabbitAdmin() {
return new RabbitAdmin(connectionFactory);
}

// 声明队列
@Bean
public Queue rabbitTextQueue() {
// 默认就是自动声明的
return new Queue(QUEUE_NAME, true);
}

/**
* 配置监听连接
*/
@Bean(name = "rabbitListenerContainerFactory")
public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(
ConnectionFactory connectionFactory, RabbitProperties config) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
RabbitProperties.Listener listenerConfig = config.getListener();
factory.setAutoStartup(listenerConfig.isAutoStartup());
if (listenerConfig.getAcknowledgeMode() != null) {
factory.setAcknowledgeMode(listenerConfig.getAcknowledgeMode());
}
if (listenerConfig.getConcurrency() != null) {
factory.setConcurrentConsumers(listenerConfig.getConcurrency());
}
if (listenerConfig.getMaxConcurrency() != null) {
factory.setMaxConcurrentConsumers(listenerConfig
.getMaxConcurrency());
}
if (listenerConfig.getPrefetch() != null) {
factory.setPrefetchCount(listenerConfig.getPrefetch());
}
if (listenerConfig.getTransactionSize() != null) {
factory.setTxSize(listenerConfig.getTransactionSize());
}
return factory;
}

/**
* 具体监听队列及使用配置
*
* @param message
* @throws Exception
*/
@RabbitListener(queues = QUEUE_NAME, containerFactory = "rabbitListenerContainerFactory")
public void handleMessage(String message) throws Exception {
// 具体处理
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: