我正在使用Mule 3.5.0并尝试实施缓存策略。缓存应该被API攻击以获取Sugar CRM OAuth令牌。多个端点正在访问此缓存。
我的要求是只将一个活动元素保留在队列中,该队列为每个API调用提供5分钟的活动令牌。当TTL过期时,缓存应该抓取另一个令牌并将其缓存以供后续调用。
问题出现了,当多个入站端点正在访问缓存时,缓存也会抛出旧值。我需要做的就是将maxEntries更改为1吗?或者有更好的方法来实现这个目标吗?
<ee:object-store-caching-strategy name="Caching_Strategy" doc:name="Caching Strategy">
<in-memory-store name="sugar-cache-in-memory" maxEntries="500" entryTTL="300000" expirationInterval="300000"/>
</ee:object-store-caching-strategy>
<flow name="get-oauth-token-cache" doc:name="get-oauth-token-cache" tracking:enable-default-events="true">
<ee:cache cachingStrategy-ref="Caching_Strategy" doc:name="Cache">
..............................
..............................
..............................
<logger message="------------------------ Direct Call for Token----------------------" level="INFO" doc:name="Logger"/>
<DATAMAPPER to set #payload.access_token />
</ee:cache>
<set-session-variable variableName="access_token" value="#[payload.access_token]" doc:name="Session Variable"/>
</flow>
答案 0 :(得分:1)
问题是在ee:cache之后的第一行我有Set Payload功能。不得不把它带到缓存范围之外。
对不起。