0

我有一个具有以下配置的独立 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"/>

在尝试使用配置文件时,连接被拒绝。关于为什么配置文件不起作用的任何想法?所有文档似乎都建议应该自动激活配置文件。

4

1 回答 1

4

Spring 自动重新配置支持仅在使用应用程序类型“Spring”推送应用程序时才有效。当作为独立应用程序(或 JavaWeb,或除 Spring 之外的任何其他应用程序)推送时,不会完成 Spring 自动重新配置。

如果您只想在独立应用程序中激活云配置文件,则可以添加-Dspring.profiles.active="cloud"到您在将应用程序推送到 CF 时指定的命令行。

如果您需要进行更复杂的配置,另一种选择是使用Spring Java ConfigurationCloudFoundry Java Runtime API。在@BeanSpring@Configuration类的方法中,您可以调用该类的isCloudFoundry()方法CloudEnvironment(包含在 CF Runtime API 中)来检测应用程序是否在 CloudFoundry 上运行。基于此,您可以适当地实例化 RabbitMQ bean。

于 2012-11-29T18:48:34.413 回答