我想把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初始化,但发送方法仍然不能工作(可能需要手动设置连接属性,但不知道怎么做)。
Spring Boot会自动配置 RabbitTemplate
为你。如果您使用的是纯香草的Spring,您应该在您的网站上定义 RabbitTemplate
如豆 ApplicationContext
.
@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());
}
}