1

我正在尝试使用 Infinispan 缓存在 2 个不同的服务器上设置复制缓存。

Node1 和 Node2 是运行 hotrod 服务器的 2 台物理服务器。

我的意图是从远程客户端(Node3)在 node1/node2 上创建一些缓存(使用自定义配置)。

在 Node3 上,我正在尝试执行以下操作..

RemoteCacheManager rm = new RemoteCacheManager("node1ip4address", portNumber); rm.getCache("namedcache1"); ---->这个方法的javadoc说,

/** * 如果缓存已被定义,则从远程服务器检索命名缓存,否则如果缓存名称未定义,它将返回 null。*/

我检查了 RemoteCacheManager 的源代码。此类没有如 EmbeddedCacheManager 中存在的 defineConfiguration() 方法。

有没有办法可以在远程节点上创建缓存?

谢谢,-文卡特

4

2 回答 2

3

不,没有办法通过 HotRod 协议创建缓存。即使在嵌入式模式下,Infinispan 也没有办法说“在所有集群节点上创建此缓存”,而 HotRod 需要这样做,因为您不知道您正在访问哪个服务器。

CacheManager JMX bean有一个方法,startCache但您仍然不能定义新配置(它们将使用默认缓存的配置)。您需要在集群的每个节点上调用它。

显然,最好在服务器配置中静态配置缓存。

于 2012-03-29T09:52:06.773 回答
2

我们可以使用 rest 调用运行在 9990 上的管理并创建缓存,

curl --digest -s -i -u "usr:pwd" -X POST -H 'Content-type: application/json' -d @cacheTemplate.json http://serverurl:9990/management

在哪里cacheTemplate.json创建一个名为cart的容器中的名称缓存clustered

{
    "address":[
        "subsystem",
        "datagrid-infinispan",
        "cache-container",
        "clustered",
        "configurations",
        "CONFIGURATIONS",
        "distributed-cache-configuration",
        "cart"
    ],
    "operation":"add",
    "mode":"SYNC",
    "store-type":"None",
    "store-original-type":"None",
    "template":false
}
于 2018-05-15T16:28:31.917 回答