Ehcache: как переключиться на хранилище дисков, когда сервер Terracotta отключен?

#java #caching #ehcache #terracotta

#java #кэширование #ehcache #terracotta

Вопрос:

Мне нужно настроить мое приложение для переключения с конфигурации сервера Terracotta на DiskStore, когда сервер Terracotta недоступен. Есть ли способ сделать это? Когда я настраиваю элемент terracottaConfig на ehcache.xml Я не могу запустить приложение, если сервер Terracotta был недоступен…. Это мой ehcache.xml конфигурация:

     <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="ehcache.xsd" name="gpCacheManager">

    <diskStore path="java.io.tmpdir" />

    <terracottaConfig rejoin="true">
        <tc-config>
            <servers>
                <server host="XXX.XXX.XXX.XX" name="host1">
                </server>
            </servers>
            <clients>
                <logs>app/logs-%i</logs>
            </clients>
            <nonstop immediateTimeout="true" timeoutMillis="3000">
                <timeoutBehavior type="localReads" />
            </nonstop>
        </tc-config>
    </terracottaConfig>

    <defaultCache maxElementsInMemory="10000" eternal="false"
        timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false"
        diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU">
        <terracotta clustered="true">
            <nonstop immediateTimeout="false" timeoutMillis="3000">
                <timeoutBehavior type="localReads" />
            </nonstop>
        </terracotta>
    </defaultCache>

    <cache name="oxmCache" maxElementsInMemory="10000" eternal="false"
        timeToIdleSeconds="240" timeToLiveSeconds="240" overflowToDisk="false"
        diskPersistent="false" diskExpiryThreadIntervalSeconds="240"
        memoryStoreEvictionPolicy="LRU">
        <terracotta clustered="true">
            <nonstop immediateTimeout="false" timeoutMillis="3000">
                <timeoutBehavior type="localReads" />
            </nonstop>
        </terracotta>
    </cache>

</ehcache>
  

Спасибо!

Ответ №1:

Боюсь, что использование диска (на клиенте) на данный момент не поддерживается. В принципе, если я вас правильно понял, вы хотели бы, чтобы записи передавались на диск, а не на сервер terracotta, когда он недоступен.

Теперь, я полагаю, вы также хотели бы получить согласование, когда сервер вернется, не так ли? Потому что мне трудно понять, насколько полезно иметь (частичные) данные на диске… Не хотите уточнить?

Комментарии:

1. Реальная проблема в том, что я не могу использовать приложение в автономном режиме (без сервера Terracotta). Если есть способ запустить приложение без доступного сервера Terracotta, я обработаю частичные данные на диске для согласования, когда сервер будет доступен…