EhCache в распределенном режиме

Мы пытаемся использовать EhCache в качестве распределенного кэша в нашем приложении. Экземпляр EhCache встроен в наш сервер, и мы использовали терракотовый кластер.

Все наши экземпляры сервера (и ehcache) успешно подключаются к этому tc. Мы успешно вставляем, обновляем и попадаем в каждый наш кеш. Но мы не можем перебирать любой кеш.

Возможно, мы неправильно настроили наши кеши, но кажется, что методы итератора еще не реализованы (в org.ehcache.clustered.client.internal.store.ClusteredStore):

  @Override
  public Iterator<Cache.Entry<K, ValueHolder<V>>> iterator() {
     // TODO: Make appropriate ServerStoreProxy call
     throw new UnsupportedOperationException("Implement me");
  }

Наша конфигурация кеша выглядит следующим образом:

<service>
    <tc:cluster>
        <tc:connection url="terracotta://10.23.69.20:9510/clustered"/>
        <tc:server-side-config auto-create="true">
            <tc:default-resource from="default-resource"/>
        </tc:server-side-config>
    </tc:cluster>
</service>


<cache-template name="CacheTemplate">
    <resources>
        <tc:clustered-dedicated unit="MB">16</tc:clustered-dedicated>
    </resources>
    <tc:clustered-store consistency="strong"/>
</cache-template>

<cache alias="CacheDaemon" uses-template="CacheTemplate">
    <key-type>java.lang.String</key-type>
    <value-type>com.server.cache.DaemonInstance</value-type>
</cache>

<cache alias="CacheProperty" uses-template="CacheTemplate">
    <key-type>java.lang.String</key-type>
    <value-type>java.lang.String</value-type>
</cache>

Я не нашел другого способа, даже получить список ключей.

Так мы допустили ошибку в конфигурации кеша? Или это то, что распределенный режим EhCache полностью несовместим с этим методом (и поэтому мы не будем использовать EhCache).

0 ответов

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