早上好,
我正在实现OSB-Coherence Integration,我想仅在返回条件时才缓存结果。
示例:
我有一个OSB业务服务接口,在成功案例中返回stateCode = 0,否则它将返回错误代码。我希望只缓存成功案例。
答案 0 :(得分:0)
通过将<tp:cache-token>
的自定义值插入$outbound/ctx:transport/ctx:request
,您可以执行一些基于请求打开或关闭结果缓存的技巧。
但是,根据结果进行条件缓存需要采用不同的方法。
我会做的是创建一个缓存包装代理。
我们说您的代理流程目前是
MyProxy-http.proxy -> MyBusinessService-http-cached.biz
而是将bizref插入第二个代理,如下所示:
MyProxy-http.proxy -> MyBusinessService-sb-cached.biz -> MyBusinessService-wrapper-sb.proxy -> MyBusinessService-http.biz
新的bizref具有缓存,因此您可以从旧的bizref中删除结果缓存。
(到目前为止,你还没有改变任何东西,所以下一步是进行条件缓存的步骤)
MyBusinessService-wrapper-sb.proxy
以阅读回复的$body
。如果它从响应中检测到它不应该被缓存,则会返回失败。MyProxy-http.proxy
中重新构建原始邮件,并将其作为未缓存的成功邮件返回。消息。