gpt4 book ai didi

java - 如何使用 ClientCache 在所有集群/实例上的 GemFire 中发布

转载 作者:行者123 更新时间:2023-12-02 02:23:42 26 4
gpt4 key购买 nike

我们有 3 个集群(美国、欧盟、亚太地区),每个集群有 2 台主机(一台主主机,另一台辅助主机)

如果有更新,每个集群的主主机都会更新同一集群中的辅助主机。但集群之间不会相互通信。

我们有一个进程需要更新在每个集群的主要主机上运行的所有 3 个 GemFire 缓存(最终将更新辅助主机 GemFire)

cache-cluster-1.xml 
<client-cache>
<pool name="clientCachePool" read-timeout="90000" >
<server host="pri1-hostname" port="1111" />
<server host="sec1-hostname" port="1111" />
</pool>
<region>...</region>
<client-cache>

cache-cluster-2.xml
<client-cache>
<pool name="clientCachePool" read-timeout="90000" >
<server host="pri2-hostname" port="1111" />
<server host="sec2-hostname" port="1111" />
</pool>
<region>...</region>
<client-cache>

cache-cluster-3.xml
<client-cache>
<pool name="clientCachePool" read-timeout="90000" >
<server host="pri3-hostname" port="1111" />
<server host="sec3-hostname" port="1111" />
</pool>
<region>...</region>
<client-cache>

If I try to initialize separate ClientCache i get below error - > java.lang.IllegalStateException: A connection to a distributed system already exists in this VM.

ClientCache cc1 = ccf.set("cache-xml-file", "cache-cluster-1.xml").create(); 
ClientCache cc2 = ccf.set("cache-xml-file", "cache-cluster-2.xml").create();
ClientCache cc3 = ccf.set("cache-xml-file", "cache-cluster-3.xml").create();

如何使用 ClientCache 发布到这三个独立集群?

最佳答案

在打开 cc2 之前关闭 cc1,在打开 cc3 之前关闭 cc2。

如果确实必须访问其他集群中的数据,那么:- 如果您需要来自其他集群中区域的所有数据,请考虑 WAN 网关- 如果您只需要来自其他集群中的区域的选定数据,请考虑 CQRS 设计,其中您有另一个进程针对远程集群运行 CQ(连续查询)并使用结果更新您的附近集群。

关于java - 如何使用 ClientCache 在所有集群/实例上的 GemFire 中发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48091673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com