Hazelcast 有任何可能使用;“缓存解析程序”;与黑兹卡斯特
我正在使用spring cache和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
@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);
}
};
}