我有一个简单的问题,但我在文档或任何示例中都找不到任何相关内容。
我有一个使用RabbitMQ和Spring启动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 {{1}定义了所以我想知道我是否可以在课堂上这样做:
RabbitAutoConfiguration
但是Intellij一直在抱怨,因为它找不到那个bean的定义,好像它是某个定义顺序或某事...... 当我以这种方式启动项目时,无论如何似乎都没问题,但是当Intellij抱怨时我不喜欢,这就像我在做“不是标准方式”的事情。
提前谢谢大家!很抱歉有很长的解释。
PS:同样的问题,如果我只想自动装配Spring @Autowired
CachingConnectionFactory cachingConnectionFactory
bean并使用主机,用户名和密码属性(分别为RabbitProperties
,spring.rabbitmq.host
和spring.rabbitmq.username
)
答案 0 :(得分:0)
但是Intellij一直在抱怨,因为找不到定义...... 我不喜欢Intellij抱怨,这就像我做某事"不是标准的方式"。
您可以尝试通过将其添加到工厂方法并使用参数注入来欺骗它......
@Bean
RabbitTemplate myAwesomeTemplate(ConnectionFactory rabbitConnectionFactory) {
...
}
与属性相同。
无论哪种方式(@Autowired
或此方式)都是#34;标准方式"。
如果它仍然抱怨,我建议你和JetBrains谈谈。