Hazelcast 有任何可能使用;“缓存解析程序”;与黑兹卡斯特

Hazelcast 有任何可能使用;“缓存解析程序”;与黑兹卡斯特,hazelcast,spring-cache,jcache,Hazelcast,Spring Cache,Jcache,我正在使用spring cache和hazelcast,我只是尝试将响应保存到我的控制器: @Bean @Override public CacheManager cacheManager() { return new HazelcastCacheManager(hazelcastInstance); } //creating hazelcast cache config. @Bean public HazelcastClientCacheManager hazelcastClient

我正在使用spring cache和hazelcast,我只是尝试将响应保存到我的控制器:

@Bean
@Override
public CacheManager cacheManager() {
    return new HazelcastCacheManager(hazelcastInstance);
}

//creating hazelcast cache config.
@Bean
public HazelcastClientCacheManager hazelcastClientCacheManager() {
    CachingProvider provider = 
    HazelcastClientCachingProvider.createCachingProvider(hazelcastInstance);
    HazelcastClientCacheManager cacheManager = (HazelcastClientCacheManager) provider.getCacheManager();
    cacheManager.getHazelcastInstance().getConfig().getSerializationConfig().getByteOrder();

    Duration oneHours = Duration.ONE_MINUTE;
    MutableConfiguration<Object, Object> configuration = new MutableConfiguration<>();
    configuration.setTypes(Object.class, Object.class)
        .setExpiryPolicyFactory(AccessedExpiryPolicy.factoryOf(oneHours))
        .setStatisticsEnabled(true);
    cacheManager.createCache("mycache", configuration);*

    return cacheManager;
}

//My CacheResolver 
@Bean
@Override
public CacheResolver cacheResolver() {
    return new CustomCacheResolver(cacheManager());
}
问题:CustomCacheResolver中的resolveCaches必须返回缓存集合,但我在hazelcast中创建的缓存是ICache

有什么想法吗?我需要将缓存与其配置、ttl等一起使用。 提前谢谢

爪哇11。 弹簧靴 弹簧缓存。 hazelcast。

解决方案使用: 导入com.hazelcast.spring.cache.HazelcastCacheManager

大概是这样的:

  @Bean
  @Override
  public CacheManager cacheManager() {
    return new HazelcastCacheManager(hazelcastInstance);
  }

  @Bean
  @Override
  public CacheResolver cacheResolver() {
    return new CustomCacheResolver(concurrentMapCacheManager());
  }

  @Bean
  public CacheManager concurrentMapCacheManager() {
    return new ConcurrentMapCacheManager() {
      protected Cache createConcurrentMapCache(final String name) {
          return new ConcurrentMapCache(name,
              CacheBuilder.newBuilder().expireAfterWrite(ttl, TimeUnit.SECONDS).build().asMap(), false);
      }
    };
  }
创建CustomCacheResolver.class扩展CacheResolver就足够了。

解决方案使用: 导入com.hazelcast.spring.cache.HazelcastCacheManager

大概是这样的:

  @Bean
  @Override
  public CacheManager cacheManager() {
    return new HazelcastCacheManager(hazelcastInstance);
  }

  @Bean
  @Override
  public CacheResolver cacheResolver() {
    return new CustomCacheResolver(concurrentMapCacheManager());
  }

  @Bean
  public CacheManager concurrentMapCacheManager() {
    return new ConcurrentMapCacheManager() {
      protected Cache createConcurrentMapCache(final String name) {
          return new ConcurrentMapCache(name,
              CacheBuilder.newBuilder().expireAfterWrite(ttl, TimeUnit.SECONDS).build().asMap(), false);
      }
    };
  }

创建CustomCacheResolver.class扩展CacheResolver就足够了。

从我看到的
HazelcastCacheManager#getCache(字符串名)
返回
Cache
(不是
ICache
)。所以应该没问题。你能澄清一下这个问题吗?是的,我的错!解决方案是使用import com.hazelcast.spring.cache.HazelcastCacheManager;以及创建CacheManager concurrentMapCacheManager类型的bean。谢谢很多从我看到的
HazelcastCacheManager#getCache(字符串名)
返回
Cache
(而不是
ICache
)。所以应该没问题。你能澄清一下这个问题吗?是的,我的错!解决方案是使用import com.hazelcast.spring.cache.HazelcastCacheManager;以及创建CacheManager concurrentMapCacheManager类型的bean。谢谢很多
  @Bean
  @Override
  public CacheManager cacheManager() {
    return new HazelcastCacheManager(hazelcastInstance);
  }

  @Bean
  @Override
  public CacheResolver cacheResolver() {
    return new CustomCacheResolver(concurrentMapCacheManager());
  }

  @Bean
  public CacheManager concurrentMapCacheManager() {
    return new ConcurrentMapCacheManager() {
      protected Cache createConcurrentMapCache(final String name) {
          return new ConcurrentMapCache(name,
              CacheBuilder.newBuilder().expireAfterWrite(ttl, TimeUnit.SECONDS).build().asMap(), false);
      }
    };
  }