如何在wso2 ESB中缓存来自端点的响应

如何在wso2 ESB中缓存来自端点的响应,wso2,wso2esb,Wso2,Wso2esb,我想在我的代理中缓存响应,当我再次点击我的代理时,它应该会给我缓存的数据。我曾尝试使用缓存中介器,但无法确定我的数据是否真的得到缓存。因此,基本上我尝试实现的是,如果缓存中有数据,那么它不应该命中端点。它应该从缓存发送响应。期待你的回答。提前谢谢 我的服务代码如下: public class GetMirrorValue { public String getValue(String data) throws Exception { System.out.println("Ins

我想在我的代理中缓存响应,当我再次点击我的代理时,它应该会给我缓存的数据。我曾尝试使用缓存中介器,但无法确定我的数据是否真的得到缓存。因此,基本上我尝试实现的是,如果缓存中有数据,那么它不应该命中端点。它应该从缓存发送响应。期待你的回答。提前谢谢

我的服务代码如下:

public class GetMirrorValue {
    public String getValue(String data) throws Exception {
    System.out.println("Inside Service code");
        return data;
    }
}
我的回答是:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="CheckCacheSeq">
   <cache scope="per-host" collector="false" hashGenerator="org.wso2.caching.digest.DOMHASHGenerator" timeout="20">
      <implementation type="memory" maxSize="100"/>
   </cache>
   <send>
      <endpoint key="DummyEP"/>
   </send>
</sequence>
<outSequence xmlns="http://ws.apache.org/ns/synapse">
   <cache scope="per-host" collector="true"/>
   <send/>
</outSequence>

我的顺序是:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="CheckCacheSeq">
   <cache scope="per-host" collector="false" hashGenerator="org.wso2.caching.digest.DOMHASHGenerator" timeout="20">
      <implementation type="memory" maxSize="100"/>
   </cache>
   <send>
      <endpoint key="DummyEP"/>
   </send>
</sequence>
<outSequence xmlns="http://ws.apache.org/ns/synapse">
   <cache scope="per-host" collector="true"/>
   <send/>
</outSequence>


但每当我通过try-it工具连续点击我的代理服务时,我都会从服务中获取数据,而不是从缓存中获取数据,因为每次都在我的服务器系统中.out.println(“内部服务代码”);打印出来了吗

一旦请求被命中,您可以修改后端服务(代理服务调用的端点),以打印服务器日志中的内容。第一个请求应该到达后端。然后在缓存的时间段内,请求将不会转到后端服务。只有在缓存过期后,它才会转到后端服务。因此,查看后端服务器日志上的打印,可以观察缓存行为


您可以在ESB中启用wirelogs以查看通过ESB的请求/响应。

我遵循了链接。已经完成了完全相同的步骤,但我仍然得到了上面问题AddLogMessagesindeCheckCacheSeq中描述的结果,以验证您的请求是否通过CheckCacheSeq序列路由(例如:在缓存中介器之前和之后添加两条日志消息)。如果日志出现在carbon日志中,请尝试增加缓存中介的超时值。