Hazelcast客户端实例的唯一名称

Hazelcast客户端实例的唯一名称,hazelcast,Hazelcast,我有3个节点的hazelcast服务器集群,每个节点都启动了hazelcast客户端。hazelcast客户端使用智能路由,并使用客户端/服务器模式 我收集通过IExecutorService和ClientService.getConnectedClients()连接到Hazelcast服务器群集的客户端列表,这些客户端位于每个Hazelcast客户端中。在获取列表后,我想循环访问客户端的获取列表,并将其与自己的实例(获取列表的客户端)进行比较,如果找到,则执行一些应用程序逻辑。一种方法是在Ha

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

我收集通过IExecutorService和ClientService.getConnectedClients()连接到Hazelcast服务器群集的客户端列表,这些客户端位于每个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


public void setInstanceName(String instanceName)

发现存在唯一的id生成器,但它返回long。请尝试下面给出的代码,并告诉我是否有用。instanceName将由hazelcast设置,还是调用代码必须设置它?从外观上看,我认为调用者必须这样做。如果不在配置构建中提供一个值,Hazelcast将像当前一样创建一个值。
HazelcastClient.newHazelcastClient(clientConfig)。getName()
到目前为止不是唯一的。在这种情况下怎么用呢?对不起,迪内什。我错过了您的回复,我们使用客户端的IP地址作为唯一标识进行处理。如果IP地址不会改变,那么这也是一个可行的解决方案。