查询WSO2 DSS / ESB中的缓存响应

时间:2014-08-13 12:52:32

标签: caching wso2 wso2esb wso2dss

我有一个Oracle数据库视图,其中包含大约8000名员工的详细信息。我需要从该视图填充员工搜索建议。我计划使用WSO2 DSS / DSS + ESB为其创建数据服务。而是查询每个服务调用的视图,我想在DSS / ESB中缓存整个视图并查询缓存以查找所有过滤查询("喜欢","其中& #34;查询),直到缓存过期。

ESB / DSS是否有与上述情况相关的可能性?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以将缓存介体与WSO2 ESB一起使用:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Test" transports="https http" startOnLoad="true" trace="disable">
    <description/>
    <target>
        <inSequence>
            <cache id="someCache" scope="per-host" collector="false" hashGenerator="org.wso2.caching.digest.DOMHASHGenerator" timeout="10">
                <onCacheHit>
                    <log level="custom">
                        <property name="debug" value="incache"/>
                    </log>
                    <header name='To' action="remove"/>
                    <send/> <!-- send back previous reponse, outSequence will not be executed -->
                </onCacheHit>
                <implementation type="memory" maxSize="1000"/>
            </cache>
            <send> <!-- Current request (hash) has not been found in the cache -->
                <endpoint>
                    <address uri="http://myhost:8080/myapp/MyService"/>
                </endpoint>
            </send>
        </inSequence>
        <outSequence>
            <cache id="someCache" scope="per-host" collector="true"/> <!-- Add this response to the cache -->
            <log level="custom">
                <property name="debug" value="outseq"/>
            </log>
            <send/>
        </outSequence>
    </target>
</proxy>

在inSequence中,如果缓存中存在当前请求,则将使用先前的响应执行“onCacheHit”中介。否则,将执行到端点的“发送”

在outSequence中,您将响应添加到缓存