我有一个独立的spring / rabbit应用程序,其配置如下:
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory" reply-timeout="1000"/>
<rabbit:admin connection-factory="connectionFactory" />
<beans profile="cloud">
<cloud:rabbit-connection-factory id="connectionFactory"/>
</beans>
<beans profile="default">
<rabbit:connection-factory id="connectionFactory"/>
</beans>
我正确地将一个兔子服务绑定到我的应用程序。
当我直接将以下内容放入文件中时,它可以正常工作:
<cloud:rabbit-connection-factory id="connectionFactory"/>
在尝试使用配置文件时,连接被拒绝。关于为什么配置文件不起作用的任何想法?所有文档似乎都表明应该自动激活配置文件。
答案 0 :(得分:4)
Spring自动重新配置支持仅在使用应用程序类型“Spring”推送应用程序时才有效。当作为独立应用程序(或JavaWeb,或除Spring之外的任何其他东西)推送时,则不会执行Spring自动重新配置。
如果您只想在独立应用程序中激活云配置文件,则可以将-Dspring.profiles.active="cloud"
添加到将应用程序推送到CF时指定的命令行。
如果您需要执行更复杂的配置,另一个选项是使用Spring Java Configuration和CloudFoundry Java Runtime API。在Spring @Bean
类的@Configuration
方法中,您可以调用isCloudFoundry()
类的CloudEnvironment
方法(包含在CF运行时API中)来检测应用程序是否为是否在CloudFoundry上运行。基于此,您可以适当地实例化RabbitMQ bean。