RabbitMQ在spring(不是spring boot)中的自动线不工作。

问题描述 投票:0回答:1

我想把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初始化,但发送方法仍然不能工作(可能需要手动设置连接属性,但不知道怎么做)。

java spring rabbitmq
1个回答
1
投票

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());
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.