Spring Cloud 微服務啟動警告緩存不可用,解決


Spring Cloud 微服務啟動警告如下:

2021-12-08 11:51:01.511 [main] WARN  org.springframework.cloud.loadbalancer.config.LoadBalancerCacheAutoConfiguration$LoadBalancerCaffeineWarnLogger-Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.

翻譯:
Spring Cloud LoadBalancer 當前正在使用默認緩存。 您可以切換到使用 Caffeine 緩存,方法是將它和 org.springframework.cache.caffeine.CaffeineCacheManager 添加到類路徑。
2021-12-08 11:51:21.128 [http-nio-8300-exec-2] WARN  org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplierBuilder-LoadBalancerCacheManager not available, returning delegate without caching.

翻譯:
LoadBalancerCacheManager 不可用,不緩存就返回委托。

谷歌查詢:

如何解決“Spring Cloud LoadBalancer 當前正在使用默認緩存。您可以切換到使用 Caffeine 緩存”警告?

官網配置:

Spring Cloud LoadBalancer 緩存

親測操作:

引入Caffeine依賴:

<!-- https://mvnrepository.com/artifact/com.github.ben-manes.caffeine/caffeine -->
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
    <version>3.0.5</version>
</dependency>

Spring Boot 配置:

spring:
  #spring cloud 配置
  cloud:
	# 負載均衡器緩存
    loadbalancer:
      cache:
        enabled: true
        caffeine:
          spec: initialCapacity=500,expireAfterWrite=5s

此配置非必要,若不配置則使用默認配置:

package org.springframework.cloud.loadbalancer.cache;

import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.cloud.loadbalancer.core.CachingServiceInstanceListSupplier;
import org.springframework.util.StringUtils;

public class CaffeineBasedLoadBalancerCacheManager extends CaffeineCacheManager implements LoadBalancerCacheManager {
    public CaffeineBasedLoadBalancerCacheManager(String cacheName, LoadBalancerCacheProperties properties) {
        super(new String[]{cacheName});
        if (!StringUtils.isEmpty(properties.getCaffeine().getSpec())) {
            this.setCacheSpecification(properties.getCaffeine().getSpec());
        } else {
            this.setCaffeine(Caffeine.newBuilder().initialCapacity(properties.getCapacity()).expireAfterWrite(properties.getTtl()).softValues());
        }

    }

    public CaffeineBasedLoadBalancerCacheManager(LoadBalancerCacheProperties properties) {
        this(CachingServiceInstanceListSupplier.SERVICE_INSTANCE_CACHE_NAME, properties);
    }
}

其中this.setCaffeine(Caffeine.newBuilder().initialCapacity(properties.getCapacity()).expireAfterWrite(properties.getTtl()).softValues()); 就是使用默認的緩存配置信息對Caffeine進行配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM