【发布时间】:2016-03-09 09:03:36
【问题描述】:
我有一个简单的问题,但我在文档或任何示例中都找不到任何相关信息。
我有一个使用 RabbitMQ 和 Spring Boot AMQP 模块的 Spring Boot 项目。
我正在使用特定的交换器,以及 Spring Jackson2JsonMessageConverter 所以我需要定义自己的 RabbitTemplate bean,我猜(此时,如果有人知道是否可以用另一种更简单的方式完成,欢迎您)。
@Bean
RabbitTemplate myAwesomeTemplate() {
RabbitTemplate rabbitTemplate = new RabbitTemplate();
rabbitTemplate.setExchange(myBeautifulExchange);
rabbitTemplate.setRoutingKey("legendary");
rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
rabbitTemplate.setConnectionFactory(connectionFactory());
return rabbitTemplate;
}
对我来说真正的问题是我也必须定义一个 CachingConnectionFactory bean,只是为了将其设置为模板,但似乎 CachingConnectionFactory 已经由 Spring RabbitAutoConfiguration 类定义,所以我想知道我是否可以在课堂上简单地做到这一点:
@Autowired
CachingConnectionFactory cachingConnectionFactory
但是 Intellij 一直在抱怨,因为它找不到那个 bean 的定义,好像它是一些定义顺序问题或什么的...... 当我以这种方式启动项目时,无论如何似乎还可以,但我不喜欢 Intellij 抱怨,就像我在做一些“不是标准方式”的事情。
提前谢谢大家!抱歉解释太长了。
PS:如果我只想自动装配 Spring RabbitProperties bean 并使用主机、用户名和密码属性(分别为 spring.rabbitmq.host、spring.rabbitmq.username 和 spring.rabbitmq.password),也会出现同样的问题。
【问题讨论】:
标签: java spring properties spring-boot spring-amqp