2013-05-14 40 views
0

我想缓存我的代理中的响应,当我再次打我的代理时,它应该让我缓存数据。我曾尝试使用缓存中介,但我无法找到我的数据是否真的获得缓存或不。因此,基本上我想实现的是如果我有缓存中的数据,那么它不应该击中端点。它应该发送响应来自缓存。期待你的回答。在此先感谢如何在wso2中缓存来自终端的响应ESB

我有我的服务代码:

public class GetMirrorValue { 
    public String getValue(String data) throws Exception { 
    System.out.println("Inside Service code"); 
     return data; 
    } 
} 

我inSequence中是:

<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工具连续进行,我从服务器获取数据,但不是每次从我的服务器Sy获取缓存stem.out.println(“内部服务代码”);打印?

回答

1

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

http://docs.wso2.org/wiki/display/ESB460/Sample+420%3A+Simple+Cache+Implemented+on+ESB+for+the+Actual+Service

+0

我跟着链接。已经完成了完全相同的步骤,但仍然得到了上述问题 – Roy 2013-05-14 11:08:20

+1

中所述的结果在CheckCacheSeq中添加日志消息,以验证您的请求是通过CheckCacheSeq序列路由的(例如:在缓存中介之前和之后添加两条日志消息)。如果日志显示在碳日志中,则尝试增加缓存介体的超时值。 – 2013-05-15 08:38:16

0

您可以启用ESB wirelogs看到请求/响应通过ESB去。