0

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

基于前面的 SO answer to set heartbeat property on rabbitmq autoconfig connectionfactory bean,我尝试按如下方式设置 heartbeat 属性。

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

但是,通过 Rabbit 管理控制台查看时,连接仍然显示心跳是默认的 60 秒。

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

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

4

1 回答 1

2

如果连接是由 Spring Cloud Connectors(即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);
    }
}

连接器文档中提供了更多详细信息。

于 2018-04-27T03:33:25.227 回答