Class CacheWarmerManager

java.lang.Object
cloud.opencode.base.cache.warming.CacheWarmerManager

public final class CacheWarmerManager extends Object
Cache Warmer Manager - Orchestrates cache warming lifecycle 缓存预热管理器 - 编排缓存预热生命周期

Manages the warming of caches at application startup or on-demand, with support for priority ordering, async execution, and callbacks.

管理应用启动时或按需的缓存预热,支持优先级排序、异步执行和回调。

Features | 主要功能:

  • Priority-based warming order | 基于优先级的预热顺序
  • Parallel warming execution | 并行预热执行
  • Progress tracking and metrics | 进度跟踪和指标
  • Retry on failure | 失败重试
  • Completion callbacks | 完成回调

Usage Examples | 使用示例:

// Register warmers
CacheWarmerManager manager = CacheWarmerManager.getInstance();

manager.register("users", userCache, () -> userDao.findHotUsers(1000));
manager.register("products", productCache,
    CacheWarmer.paged(offset -> productDao.findProducts(offset, 100), 100, 10));

// Warm all caches
WarmingResult result = manager.warmAll();
System.out.println("Warmed " + result.totalEntries() + " entries in " + result.duration());

// Async warming
manager.warmAllAsync().thenAccept(r ->
    log.info("Warming completed: {}", r));

// Warm specific cache
manager.warm("users");

Security | 安全性:

  • Thread-safe: Yes - 线程安全: 是
  • Null-safe: Yes - 空值安全: 是
Since:
JDK 25, opencode-base-cache V2.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • getInstance

      public static CacheWarmerManager getInstance()
      Get singleton instance 获取单例实例
      Returns:
      instance | 实例
    • register

      public <K,V> CacheWarmerManager register(String name, Cache<K,V> cache, CacheWarmer<K,V> warmer)
      Register a cache warmer 注册缓存预热器
      Type Parameters:
      K - key type | 键类型
      V - value type | 值类型
      Parameters:
      name - cache name | 缓存名称
      cache - target cache | 目标缓存
      warmer - the warmer | 预热器
      Returns:
      this manager | 此管理器
    • register

      public <K,V> CacheWarmerManager register(String name, Cache<K,V> cache, CacheWarmer<K,V> warmer, int priority)
      Register a cache warmer with priority 注册带优先级的缓存预热器
      Type Parameters:
      K - key type | 键类型
      V - value type | 值类型
      Parameters:
      name - cache name | 缓存名称
      cache - target cache | 目标缓存
      warmer - the warmer | 预热器
      priority - priority (lower = higher) | 优先级(数值越小越优先)
      Returns:
      this manager | 此管理器
    • unregister

      public CacheWarmerManager unregister(String name)
      Unregister a cache warmer 取消注册缓存预热器
      Parameters:
      name - cache name | 缓存名称
      Returns:
      this manager | 此管理器
    • setListener

      Set global warming listener 设置全局预热监听器
      Parameters:
      listener - the listener | 监听器
      Returns:
      this manager | 此管理器
    • warmAll

      Warm all registered caches synchronously 同步预热所有注册的缓存
      Returns:
      warming result | 预热结果
    • warmAllAsync

      Warm all registered caches asynchronously 异步预热所有注册的缓存
      Returns:
      future with warming result | 包含预热结果的 Future
    • warmAllParallel

      public CacheWarmerManager.WarmingResult warmAllParallel(int parallelism)
      Warm all caches in parallel 并行预热所有缓存
      Parameters:
      parallelism - max concurrent warmings | 最大并发预热数
      Returns:
      warming result | 预热结果
    • warm

      Warm a specific cache 预热指定缓存
      Parameters:
      name - cache name | 缓存名称
      Returns:
      warming result for this cache | 此缓存的预热结果
    • warmAsync

      Warm a specific cache asynchronously 异步预热指定缓存
      Parameters:
      name - cache name | 缓存名称
      Returns:
      future with warming result | 包含预热结果的 Future
    • getMetrics

      public CacheWarmerManager.WarmingMetrics getMetrics()
      Get warming metrics 获取预热指标
      Returns:
      metrics | 指标
    • getRegisteredCaches

      public Set<String> getRegisteredCaches()
      Get registered cache names 获取已注册的缓存名称
      Returns:
      cache names | 缓存名称集合