3

在 hazelcast 文档中,有一些对名为“default”的缓存的简短引用 - 例如,这里:http: //docs.hazelcast.org/docs/3.6/manual/html-single/index.html#jcache-declarative -配置

后来这里又提到了缓存默认配置:http: //docs.hazelcast.org/docs/3.6/manual/html-single/index.html#icache-configuration

我想要的是能够配置创建缓存时继承的“默认”设置。例如,给定以下配置片段:

<cache name="default">
  <statistics-enabled>true</statistics-enabled>
  <management-enabled>true</management-enabled>
  <expiry-policy-factory>
    <timed-expiry-policy-factory expiry-policy-type="ACCESSED" time-unit="MINUTES" duration-amount="2"/>
  </expiry-policy-factory>
</cache>

我希望通过以下测试:

@Test
public void defaultCacheSettingsTest() throws Exception {
  CacheManager cacheManager = underTest.get();
  Cache cache = cacheManager.createCache("foo", new MutableConfiguration<>());
  CompleteConfiguration cacheConfig = (CompleteConfiguration) cache.getConfiguration(CompleteConfiguration.class);
  assertThat(cacheConfig.isManagementEnabled(), is(true));
  assertThat(cacheConfig.isStatisticsEnabled(), is(true));
  assertThat(cacheConfig.getExpiryPolicyFactory(),
    is(AccessedExpiryPolicy.factoryOf(new Duration(TimeUnit.MINUTES, 2l)))
  );
}

Ehcache 有一个“模板”机制,我希望我能得到类似的行为。

4

1 回答 1

2

Hazelcast 支持使用通配符进行配置。您可以使用<cache name="*">for allCache来共享相同的配置,或者根据需要将其他模式应用于组Cache配置。

请注意,由于您已经使用 Hazelcast 声明性配置来配置您Cache的 s,您应该使用CacheManager.getCache而不是createCache获取Cache实例:Caches 创建时CacheManager.createCache(..., Configuration)忽略声明性配置,因为它们是使用Configuration传递的参数显式配置的。

于 2017-03-02T08:06:50.407 回答