2013-05-14 76 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去。