0

我无法从 App1 读取存储在对象存储中的键值。

我有 2 个应用程序 App1,它将变量的值(比如“名称”)存储到某个值(比如“abc”)。从 App2 中,我想检索键的值(在我们的例子中为“名称”),但它总是失败并出现 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"/>

有人可以指导我,我哪里出错了吗?

4

1 回答 1

1

主要原因是两个应用程序相互独立并使用自己的内存存储来保存数据。
因此,当您的app1存储其数据时,它存储在自己的内存中,这对app2不可用,因为它独立使用自己的内存中。
这两个应用程序都引用了它自己的对象存储配置。

共享对象存储的解决方案将是一个域项目,您将在域中定义一个对象存储,并将在其所有子应用程序(如app1app2app3等 )之间共享

按照此处的步骤操作:- http://bushorn.com/dealing-with-store-the-object-store/

对于 Persisting ObjectStore 使用_defaultUserObjectStorePersistent选项参考:https ://docs.mulesoft.com/mule-user-guide/v/3.9/object-store-connector#persistingdata

于 2017-10-21T21:14:39.780 回答