Время работы кэша Camel для Ehcache 3 не работает

#apache-camel #ehcache #ehcache-3

#apache-camel #ehcache #ehcache-3

Вопрос:

Я использую ehcache 3.0 и последнюю версию Apache camel. Я бы хотел удалить элемент из кэша через 120 секунд.

Ниже приведен фрагмент кода, который я использую для достижения того же

         <setHeader headerName="CamelCacheOperation" id="setCamelEhCacheOperation001">
            <constant>CamelCacheAdd</constant>
        </setHeader>
        <setHeader headerName="CamelCacheTimeToLive" id="setCamelCacheTimeToLive001">
            <simple resultType="java.lang.Integer">120</simple>
        </setHeader>
        <setHeader headerName="CamelCacheTimeToIdle" id="setCamelCacheTimeToIdle001">
           <simple resultType="java.lang.Integer">120</simple>
        </setHeader> 
        <setHeader headerName="CamelCacheEternal" id="setCamelCacheEternal001">
            <simple resultType="java.lang.Integer">0</simple>
        </setHeader>
        <setHeader headerName="CamelEhcacheAction" id="setCamelEhCacheAction001">
            <constant>PUT</constant>
        </setHeader>
        <setHeader headerName="CamelEhCacheKey" id="setCamelEhCacheAction001">
            <simple resultType="java.lang.String">${property[cachekey]}</simple>
        </setHeader> 
       <setHeader headerName="CamelEhcacheValue" id="setCamelEhCacheValue001">
                <simple>${body}</simple>
        </setHeader>            
        <to id="putValueToEhCache" uri="ehcache://cache1?keyType=java.lang.Stringamp;amp;valueType=java.lang.String"/>
  

Даже после истечения срока действия TTL элемент остается в кэше. Я использовал это в качестве ссылки: https://camel.apache.org/cache.html Я застрял на этом уже некоторое время.
Заранее спасибо.

Ответ №1:

CamelCacheTimeToLive предназначен для старого компонента camel-cache, новый, camel-ehcache не обрабатывает такой заголовок.

Чтобы настроить срок действия кэша, вам необходимо настроить пользовательскую конфигурацию, как описано http://www.ehcache.org/documentation/3.7/expiry.html

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

1. Спасибо за ваш ответ. Есть ли какой-либо другой способ передать срок действия через заголовок или через сам uri ehcache, без явной записи ehcache.xml ?

2. Мое намерение состоит в том, чтобы избежать ehcahe.xml файл и попробуйте достичь этого, используя некоторую конфигурацию компонента в camel-context.xml сам по себе

3. Невозможно использовать заголовки, поскольку ehcache 3.x не предоставляет такой опции, поэтому вам нужно либо настроить компонент ehcache, либо конечную точку, см. github.com/apache/camel/blob/master/components/camel-ehcache/… Поскольку вы уже используете xml, запись xml может быть более простым вариантом