如何使用OSB条件缓存结果?

时间:2016-06-07 13:33:06

标签: caching osb oracle-coherence

早上好,

我正在实现OSB-Coherence Integration,我想仅在返回条件时才缓存结果。

示例:

我有一个OSB业务服务接口,在成功案例中返回stateCode = 0,否则它将返回错误代码。我希望只缓存成功案例。

1 个答案:

答案 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中删除结果缓存。

(到目前为止,你还没有改变任何东西,所以下一步是进行条件缓存的步骤)

  1. 您修改MyBusinessService-wrapper-sb.proxy以阅读回复的$body。如果它从响应中检测到它不应该被缓存,则会返回失败。
  2. 此故障将通过bizref抑制结果缓存。
  3. 如果它对您很重要,您可以通过错误处理程序在MyProxy-http.proxy中重新构建原始邮件,并将其作为未缓存的成功邮件返回。消息。