如何在 Cloud Foundry 上设置 Spring Boot RabbitMQ Heartbeat?

How to set Spring Boot RabbitMQ Heartbeat on Cloud Foundry?

我在 Cloud Foundry 上有一个应用程序 运行,带有 Spring Boot (1.5.12) 和 spring-boot-starter-amqp

根据之前对 的 SO 回答,我尝试如下设置心跳 属性。

cf set-env app spring.rabbitmq.requested-heartbeat 30
cf restage app

但是通过Rabbit管理控制台查看,连接还是提示心跳是默认的60s

我使用执行器端点进行了堆转储,并查看了似乎已由 spring-cloud-spring-service 自动重新配置的 connectionFactory -连接器。它似乎有默认的 60 秒,而忽略了请求的 30 秒。

是否有另一个环境属性应该用于配置心跳值?如果没有,我怀疑我们会连线 CachingConnectionFactory 并在那里修改它。

如果连接是由 Spring 云连接器创建的(即 spring-cloud-spring-service-connector),则您需要使用 Java 配置自定义连接。

@Configuration    
class CloudConfig extends AbstractCloudConfig {
    @Bean 
    public RabbitConnectionFactory rabbitFactory() {
        Map<String, Object> properties = new HashMap<String, Object>();
        properties.put("requestedHeartbeat", 30);

        RabbitConnectionFactoryConfig rabbitConfig = new 
            RabbitConnectionFactoryConfig(properties);
        return connectionFactory().rabbitConnectionFactory(rabbitConfig);
    }
}

Connectors docs 中提供了更多详细信息。