【问题标题】:How to set Spring Boot RabbitMQ Heartbeat on Cloud Foundry?如何在 Cloud Foundry 上设置 Spring Boot RabbitMQ 心跳?
【发布时间】:2023-11-22 03:15:02
【问题描述】:

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

基于之前对set heartbeat property on rabbitmq autoconfig connectionfactory bean 的SO 回答,我尝试如下设置心跳属性。

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

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

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

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

【问题讨论】:

    标签: cloud-foundry spring-amqp spring-cloud-connectors


    【解决方案1】:

    如果连接是由 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);
        }
    }
    

    更多详情请参阅Connectors docs

    【讨论】:

      最近更新 更多