Соблюдает ли Hazelcast конфигурацию кэша по умолчанию

В документации Hazelcast есть несколько кратких ссылок на кэш с именем "default" - например, здесь: http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html

Позже, здесь есть еще одно упоминание о конфигурации кэша по умолчанию: http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html

Я хотел бы иметь возможность настроить параметры по умолчанию, которые наследуются при создании кэшей. Например, учитывая следующий фрагмент конфигурации:

<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 есть "шаблонный" механизм, и я надеюсь, что у меня будет похожее поведение.

1 ответ

Решение

Hazelcast поддерживает настройку с подстановочными знаками. Ты можешь использовать <cache name="*"> для всех Caches, чтобы использовать одну и ту же конфигурацию или применить другие шаблоны к группе Cache конфигурации, как вы хотите.

Обратите внимание, что поскольку вы уже используете декларативную конфигурацию Hazelcast для настройки вашего Caches, вы должны использовать CacheManager.getCache вместо createCache чтобы получить Cache пример: Caches создан с CacheManager.createCache(..., Configuration) игнорировать декларативную конфигурацию, так как они настроены явно с Configuration передано в качестве аргумента.

Другие вопросы по тегам