Hazelcast 客户端实例的唯一名称

Unique name for Hazelcast client instances

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

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

期间为客户端分配一个唯一的名称

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

如有不明之处请告知

谢谢 JK

您可以通过以下方式唯一标识一个 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;
    }
}

给你!

如果你能等到 Hazelcast 3.6,

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