我正在使用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&valueType=java.lang.String"/>
即使在 TTL 持续时间之后,元素仍保留在缓存中。我一直在使用它作为参考:https://camel.apache.org/cache.html 我已经坚持了一段时间了。提前谢谢。
CamelCacheTimeToLive 用于旧的 camel-cache 组件,新的 camel-ehcache 不处理这样的标头。
要配置缓存过期,您需要设置自定义配置,如 http://www.ehcache.org/documentation/3.7/expiry.html