我无法从App1读取存储在Object Store中的密钥值。
我有2个应用程序,App1将变量的值(比如'name,)存储到某个值(比如'abc')。从App2开始,我想检索键的值(在我们的例子中是'name'),但它总是因org.mule.api.store.ObjectDoesNotExistException而失败。
如果两个流程都在同一个应用程序上,那么它可以正常工作,但这不是预期的行为。
两个应用程序都在同一个运行时运行,因此它应该能够检索该值。
以下是我的App1代码
<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>
App2代码
<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>
应用程序的对象存储配置是:
<objectstore:config name="ObjectStore__Connector" partition="name_value" doc:name="ObjectStore: Connector"/>
有人可以指导我,我错了吗?
答案 0 :(得分:1)
主要原因是应用程序彼此独立并使用自己的内存存储来保存数据 因此,当您的 app1 存储其数据时,它会存储在自己的内存中,而 app2 则无法存储,因为它独立使用自己的内存。 /> 这两个应用程序都指自己的Object Store配置。
共享对象存储的解决方案将是一个域项目,您将在该项目中定义域中的单个对象存储,并将在其所有子应用程序之间共享,例如 app1 , app2 , app3 等
按照此处的步骤操作: - http://bushorn.com/dealing-with-store-the-object-store/
对于Persisting ObjectStore,使用_defaultUserObjectStore
和持久选项参考:https://docs.mulesoft.com/mule-user-guide/v/3.9/object-store-connector#persistingdata