首页 > 解决方案 > Objectstore 不是通过集群环境共享的吗?

问题描述

我有一个通过调度程序调用的 API,我想存储一个变量,以便下次调度程序启动时以某种方式调用该变量(计数)并增加它。我在这里尝试使用 objectstore,但我遇到了一个问题,因为我的 API 在集群环境中运行。我认为它没有在集群环境中共享的对象存储值。尝试将持久值更改为 false(以便将数据存储在内存中)但仍然不起作用。我是否错过了什么,或者这就是它的行为方式?如果是后者,是否有其他可能的解决方案知道将值保存在实际数据库中是不可行/不可用的?谢谢你。

为对象存储添加配置

<os:object-store name="CounterStore" doc:name="Object store" doc:id="5e0b1de8-318f-49b1-ab7f-47d29f1631d2" persistent="false" config-ref="CounterStoreConfig"/>
<os:config name="CounterStoreConfig" doc:name="ObjectStore Config" doc:id="7be6b1a6-d0e0-45d4-a52a-2080a5d54802" />

我们有自己的任意点平台域,我在运行时管理器的 url 中看到 /cloudhub,所以我假设我们在 CloudHub 中运行。我们正在使用 Mule 4。

标签: mulemule-studiomule4

解决方案


CloudHub 不支持集群。它确实支持多工人部署,其中同一个应用程序部署到多个工人。这意味着集群对象存储实现在 CloudHub 中不可用。您可以使用 Object Store v1(已弃用)或推荐的 v2。两者都允许在工作人员之间共享对象存储。您需要根据文档命名对象存储。这意味着对于 Mule 4/object store v2 应该调用它_defaultPersistentObjectStore。同时删除持久属性

https://docs.mulesoft.com/object-store/#object-store-notes

对于使用 Mule 4 的 CloudHub 应用程序,如果您选择 Object Store v2,Object Store v2 将覆盖 _defaultPersistentObjectStore 对象存储。

对于使用 Mule 3 的 CloudHub 应用程序,对象存储 v2 会覆盖 _defaultUserObjectStore 对象存储。要在 Mule 3 CloudHub 应用程序中使用 Object Store v2,请将 Object Store 引用字段设置为 _defaultUserObjectStore 值。

请注意,CloudHub 中的对象存储实现不会在工作人员之间锁定,因此它可能对您没有用处:

将 Object Store v2 与多工作人员 CloudHub 应用程序一起使用可能会导致数据差异或密钥冲突。


推荐阅读