You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mule 4缓存过期机制确认及Token缓存配置咨询

Mule 4缓存过期机制问题及Token缓存配置疑问

我在实现中需要调用一个依赖Token的API,该Token有效期为15分钟。原本计划配置内存缓存,让缓存13分钟后过期,过期后重新生成Token并存入缓存。

创建Token的子流配置

<sub-flow name="common-root-get-access-token-subflow">
    <ee:cache doc:name="access token cache" cachingStrategy-ref="Token_Caching_Strategy">
        <flow-ref doc:name="Call token endpoint" name="create token" />
    </ee:cache>
    <set-variable value="#[payload.access_token]" doc:name="assign access token"  
    variableName="rootAccessToken" />
</sub-flow>

缓存策略定义

<ee:object-store-caching-strategy name="Token_Caching_Strategy" doc:name="Caching Strategy"  
    keyGenerationExpression="abcd">
    <os:private-object-store alias="tokenCache" persistent="false" maxEntries="1" 
    entryTtl="13" entryTtlUnit="MINUTES" expirationInterval="13" 
    expirationIntervalUnit="MINUTES"/>
</ee:object-store-caching-strategy>

观测到的现象

  • #1 缓存似乎在23分钟后而非13分钟后过期。参考资料后,我认为缓存时长为13分钟TTL + 13分钟间隔=26分钟,但实际观测为23分钟。
  • #2 尝试设置ttl=3分钟,interval=2分钟,缓存每4分钟过期一次。推测因首次2分钟检查时缓存未过期,第二次2分钟检查(即第4分钟)时缓存已过期,故执行清理。
  • #3 尝试设置ttl=3分钟,interval=1分钟,缓存每4分钟过期一次。推测缓存实际生命周期为3分钟,但检查间隔为1分钟,第3分钟时检查未触发清理,直到下一次检查(第4分钟)才清理。
  • #4 尝试设置ttl=3分钟,interval=3分5秒,缓存每6分5秒过期,而非预期的3分5秒。
  • #5 尝试设置ttl=3分钟,interval=1分5秒,缓存符合预期,约每3分钟5-15秒后过期。

我的理解

TTL定义缓存的实际生命周期,但缓存的实际过期时间由设置的expirationInterval决定。#5、#1、#2、#3均符合此理解,但#4为例外,原因不明。有资料指出缓存会在TTL+interval后过期。

我的环境为Mule 4.4.6运行时(Java 8)、Studio 7.16。现需确认:

  1. Mule 4缓存的实际过期机制;
  2. 若Token有效期为15分钟,能否通过设置TTL=12分30秒、expirationInterval=1分钟,实现缓存13分钟后过期?

Edit1

已启用缓存调试日志,但未观测到预期的后台清理线程日志(类似垃圾回收线程,按指定间隔运行并判断缓存是否需过期)。

内容的提问来源于stack exchange,提问作者boomslaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:16:18