2017-10-21 69 views
0

我無法讀取App1中存儲在Object Store中的密鑰的值。在mule中無法從對象存儲中檢索不同應用程序中的值

我有2個應用程序,App1將變量的值(如'name')存儲到某個值(比如'abc')。從App2開始,我想要檢索鍵的值(在我們的例子中是'name'),但它總是失敗,出現org.mule.api.store.ObjectDoesNotExistException。

如果兩個流程都在同一個應用程序上,它可以工作,但這不是預期的行爲。

這兩個應用程序都運行在同一個運行時,因此它應該能夠檢索該值。

下面是我對APP

<flow name="objectstore1Flow"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/retrieve" allowedMethods="GET" doc:name="HTTP"/> 
    <set-variable value="abc" variableName="name" doc:name="Variable" /> 
    <objectstore:store config-ref="ObjectStore__Connector" key="name" value-ref="#[flowVars.name]" doc:name="ObjectStore" /> 
</flow> 

代碼代碼應用2

<flow name="objectstore2Flow"> 
    <http:listener config-ref="gcc-httpDomainListenerConfig" path="/store2" allowedMethods="GET" doc:name="HTTP"/> 
    <objectstore:retrieve config-ref="ObjectStore__Connector" key="name" doc:name="ObjectStore" targetScope="INVOCATION"/> 
    <logger message="Value of name from cache is : #[payload]" level="INFO" doc:name="Logger"/> 
</flow> 

兩個應用程序對象存儲的配置是:

有人可以指導我,在那裏我錯了?

回答

1

主要原因是應用程序彼此獨立並使用自己的內存存儲來保存數據。
因此,當您的數據存儲在其自己的內存中時,它不可用於app2,因爲它獨立使用其自己的內存。
這兩個應用程序都指向它自己的Object Store配置。

共享對象存儲將是你將在域中定義對象存儲,並且將它的所有子應用程序,如APP1之間共享域項目的解決方案,APP2APP3

按照步驟在這裏你可以怎麼做: - http://bushorn.com/dealing-with-store-the-object-store/

用於持久化的ObjectStore使用_defaultUserObjectStore持續選項編號:https://docs.mulesoft.com/mule-user-guide/v/3.9/object-store-connector#persistingdata

+0

我確實嘗試過在bushorn.com中提到的方式,但沒有奏效。您的評論後,我重新啓動我的工作室後嘗試,現在奇怪它的工作。 我假設它不能存在,否則我會得到ObjectAlreadyExist異常,可能是我以前做錯了。 感謝您的建議,現在正在工作,現在將在羣集Mule框中檢查此問題。 – user4338724

相關問題