Ehcache 3的骆驼缓存生存时间不起作用

时间:2019-04-08 07:50:45

标签: apache-camel ehcache ehcache-3

我正在使用ehcache 3.0和最新版本的Apache骆驼。我想在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.String&amp;valueType=java.lang.String"/>

即使在TTL持续时间之后,元素仍保留在缓存中。我一直以此为参考:https://camel.apache.org/cache.html我已经坚持了一段时间。 预先感谢。

1 个答案:

答案 0 :(得分:2)

CamelCacheTimeToLive适用于旧的camel-cache组件,新的camel-ehcache不处理此类标头。

要配置缓存过期,您需要按照http://www.ehcache.org/documentation/3.7/expiry.html

的说明设置自定义配置