我有3个节点hazelcast服务器群集,并且每个节点都启动了hazelcast客户端。 hazelcast客户端使用智能路由,并使用客户端/服务器模式。
我通过每个Hazelcast客户端中的IExecutorService和ClientService.getConnectedClients()收集连接到Hazelcast服务器群集的客户端列表。在获取列表后,我想循环遍历获取的客户端列表,并将其与自己的实例(获取列表的客户端)进行比较,如果找到则执行一些应用程序逻辑。一种方法是在HazelcastClient.newHazelcastClient期间为客户端分配唯一的名称。
是否可以为每个Hazelcast客户端实例设置唯一名称? 。
如果我不清楚,请告诉我。
由于 JK
答案 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)