我想将rabbitmq与我的spring应用程序集成。所以, 我在pom.xml
中添加了以下几行 <dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.2.7.RELEASE</version>
</dependency>
然后我创建了一个名为RabbitMessageService的服务
@Component
public class RabbitMessageService{
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage(String message) {
rabbitTemplate.convertAndSend("testExchange","testKey",message);
}
}
问题是,当我从另一个控制器调用此方法时,RabbitTemplate @Autowire注释不起作用,并且RabbitTemplate变为null。
RabbitMessageService.sendMessage("Hello rabbit");
我所缺少的。这个存储库的pom文件看起来正确还是我需要导入其他内容?有太多的存储库,所以我很困惑应该导入哪一个?为什么自动装配在此处为空? 我尝试使用get set进行初始化,但send方法仍然无法正常工作(可能需要手动设置连接属性,但不确定如何执行此操作)
答案 0 :(得分:1)
Spring Boot为您自动配置RabbitTemplate
。如果使用的是普通香草Spring,则应在RabbitTemplate
中将ApplicationContext
定义为bean。
@Configuration
@EnableRabbit // Enable @RabbitListener support
public class RabbitConfig {
@Bean
public ConnectionFactory connectionFactory() {
return new CachingConnectionFactory("localhost");
}
@Bean
public AmqpAdmin amqpAdmin() {
return new RabbitAdmin(connectionFactory());
}
@Bean
public RabbitTemplate rabbitTemplate() {
return new RabbitTemplate(connectionFactory());
}
}