如何在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日志中,请尝试增加缓存中介的超时值。