Hazelcast客户端实例的唯一名称

时间:2015-10-11 12:40:05

标签: hazelcast

我有3个节点hazelcast服务器群集,并且每个节点都启动了hazelcast客户端。 hazelcast客户端使用智能路由,并使用客户端/服务器模式。

我通过每个Hazelcast客户端中的IExecutorService和ClientService.getConnectedClients()收集连接到Hazelcast服务器群集的客户端列表。在获取列表后,我想循环遍历获取的客户端列表,并将其与自己的实例(获取列表的客户端)进行比较,如果找到则执行一些应用程序逻辑。一种方法是在HazelcastClient.newHazelcastClient期间为​​客户端分配唯一的名称。

是否可以为每个Hazelcast客户端实例设置唯一名称? 。

如果我不清楚,请告诉我。

由于 JK

2 个答案:

答案 0 :(得分:2)

您可以按如下方式唯一标识hazelcast客户端。

HazelcastInstance clientInstance = HazelcastClient.newHazelcastClient(clientConfig);
String localUUID = clientInstance.getLocalEndpoint().getUuid();
System.out.println("Client UUID is  : " + localUUIID);

在下一步中,使用ExecutorService - >检索已连接的客户列表。 ClientService.getConnectedClients然后按如下方式迭代列表。

for(com.hazelcast.core.Client client : clients)
{
    if(localUUID.equals(client.getUuid()))
    {
        System.out.println("Found : " + client.getUuid());
        // perform your logic here...
        break;
    }
}

你去吧!

答案 1 :(得分:0)

如果你可以等到Hazelcast 3.6,

https://github.com/hazelcast/hazelcast/blob/master/hazelcast-client/src/main/java/com/hazelcast/client/config/ClientConfig.java 具有     public void setInstanceName(String instanceName)