Elasticsearch Transportclient容错重试逻辑/弹性

时间:2014-12-26 14:51:07

标签: elasticsearch

我在创建客户端时添加了3个trasportclient节点。

Settings settings = ImmutableSettings.settingsBuilder()
                    .put("cluster.name", clusterName)
                    .put("client.transport.sniff", true)
               .build();
TransportClient client = new TransportClient(settings);
client.addTransportAddresses(new InetSocketTransportAddress(esHost1, esPort1));
client.addTransportAddresses(new InetSocketTransportAddress(esHost2, esPort2));
client.addTransportAddresses(new InetSocketTransportAddress(esHost3, esPort3));

请注意,esHost1和esHost2已关闭。但是esHost3正在运行。但是,当我尝试连接到客户端并执行操作时,它会给出NoNodeAvailableException。根据每个动作的循环逻辑,我期望如下所示:

  1. 尝试连接到esHost1
  2. ping.timeout
  3. 后的NoNodeAvailableException
  4. 尝试连接到esHost2
  5. ping.timeout
  6. 后的NoNodeAvailableException
  7. 尝试连接到esHost3 - 并成功连接。
  8. 所以现在我开始认为Round Robin实际上是针对动作的,但是如果存在NoNodeAvailableException则不会。这是对的吗?

0 个答案:

没有答案