最近在完成期末作业的时候用到了 Rabbitmq ,由于SringBoot 开箱即用的特性导致自己原本在Springboot可以实现的功能在迁移到 SpringMVC 的时候却失效了
导入依赖
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.2.13.RELEASE</version>
</dependency>
创建配置类
/**
* @Author:weiming
* @Date:2021/6/22
*/
@Configuration
@EnableRabbit
public class RabbitMqConfig {
/**
* 这里是创建mq的连接
*/
@Bean
public CachingConnectionFactory connectionFactory(){
CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
cachingConnectionFactory.setHost("localhost");
cachingConnectionFactory.setPort(5672);
cachingConnectionFactory.setUsername("guest");
cachingConnectionFactory.setPassword("guest");
cachingConnectionFactory.setVirtualHost("myMall");
return cachingConnectionFactory;
}
/**
* 实例化RabbitTemplate
*/
@Bean
public RabbitTemplate rabbitTemplate(CachingConnectionFactory cachingConnectionFactory){
RabbitTemplate rabbitTemplate = new RabbitTemplate();
rabbitTemplate.setConnectionFactory(cachingConnectionFactory);
return rabbitTemplate;
}
@Bean
public RabbitAdmin rabbitAdmin(RabbitTemplate rabbitTemplate){
RabbitAdmin rabbitAdmin = new RabbitAdmin(rabbitTemplate);
return rabbitAdmin;
}
/**
* 这里一定要配置,我就是这里折腾了好久,如果不配置消费者会不起作用
*/
@Bean
public RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(CachingConnectionFactory cachingConnectionFactory){
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(cachingConnectionFactory);
return factory;
}
}
一定要配置RabbitMq的监听容器工厂,我这弄了好久。