摘要:嗅探器允許從正在運行的集群中自動發現節點并將它們設置到現有的實例的最小的庫,它默認使用節點信息檢索屬于集群的節點,并使用解析獲得的響應。可以在找到客戶端嗅探器的。
嗅探器
允許從正在運行的Elasticsearch集群中自動發現節點并將它們設置到現有的RestClient實例的最小的庫,它默認使用節點信息api檢索屬于集群的節點,并使用jackson解析獲得的json響應。
與Elasticsearch 2.x及以后版本兼容。
Javadoc可以在https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-client-sniffer/6.4.2/index.html找到REST客戶端嗅探器的javadoc。
Maven倉庫REST客戶端嗅探器與Elasticsearch具有相同的發布周期,將版本替換為所需的嗅探器版本,首先使用5.0.0-alpha4發布版,嗅探器版本與客戶端可以與之通信的Elasticsearch版本之間沒有任何關系,嗅探器支持從Elasticsearch 2.x及以后來獲取節點列表。
如果你正在尋找SNAPSHOT版本,可以通過https://snapshots.elastic.co/maven/獲取Elastic Maven Snapshot存儲庫。
Maven配置以下是如何使用maven作為依賴關系管理器來配置依賴關系,將以下內容添加到pom.xml文件中:
Gradle配置org.elasticsearch.client elasticsearch-rest-client-sniffer 6.4.2
以下是使用gradle作為依賴關系管理器配置依賴關系的方法,將以下內容添加到build.gradle文件中:
dependencies { compile "org.elasticsearch.client:elasticsearch-rest-client-sniffer:6.4.2" }使用
一旦創建了RestClient實例,如初始化中所示,可以將Sniffer與其關聯,Sniffer將定期使用提供的RestClient(默認情況下每隔5分鐘)從集群中獲取當前節點的列表,并通過調用RestClient#setNodes來更新它們。
RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http")) .build(); Sniffer sniffer = Sniffer.builder(restClient).build();
關閉Sniffer以使其后臺線程正確關閉并釋放其所有資源非常重要,Sniffer對象應具有與RestClient相同的生命周期,并在客戶端之前關閉:
sniffer.close(); restClient.close();
Sniffer默認每5分鐘更新一次節點,可以通過提供(以毫秒為單位)來定制此間隔,如下所示:
RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http")) .build(); Sniffer sniffer = Sniffer.builder(restClient) .setSniffIntervalMillis(60000).build();
也可以在失敗時啟用嗅探,這意味著在每次失敗后,節點列表會立即更新,而不是在下面的普通嗅探輪詢中,在這種情況下,需要首先創建SniffOnFailureListener,并在創建RestClient時提供。此外,一旦稍后創建了Sniffer,它就需要與同一個SniffOnFailureListener實例相關聯,該實例將在每次失敗時得到通知,并使用Sniffer執行所述的額外嗅探輪詢。
SniffOnFailureListener sniffOnFailureListener = new SniffOnFailureListener(); RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200)) .setFailureListener(sniffOnFailureListener) .build(); Sniffer sniffer = Sniffer.builder(restClient) .setSniffAfterFailureDelayMillis(30000) .build(); sniffOnFailureListener.setSniffer(sniffer);
將失敗監聽器設置到RestClient實例中。
在失敗時嗅探,不僅每次失敗后節點都會更新,但是,在失敗后一分鐘,默認情況下,還會比平時安排額外的嗅探輪詢,假設事情會恢復正常,我們希望盡快發現。可以通過setSniffAfterFailureDelayMillis方法在Sniffer創建時自定義所述間隔,請注意,如果未啟用在失敗時嗅探,則此最后一個配置參數無效,如上所述。
將Sniffer實例設置到失敗監聽器。
Elasticsearch節點信息api不會返回連接到節點時使用的協議,而只返回其host:port鍵值對,因此默認情況下使用http,如果應該使用https,則必須手動創建ElasticsearchNodesSniffer實例并按如下方式提供:
RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http")) .build(); NodesSniffer nodesSniffer = new ElasticsearchNodesSniffer( restClient, ElasticsearchNodesSniffer.DEFAULT_SNIFF_REQUEST_TIMEOUT, ElasticsearchNodesSniffer.Scheme.HTTPS); Sniffer sniffer = Sniffer.builder(restClient) .setNodesSniffer(nodesSniffer).build();
以同樣的方式,也可以自定義sniffRequestTimeout,默認為一秒。這是在調用節點信息api時作為查詢字符串參數提供的timeout參數,這樣當超時在服務器端到期時,盡管它可能只包含作為集群一部分的節點的子集,但在此之前已響應的節點仍會返回有效響應。
RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http")) .build(); NodesSniffer nodesSniffer = new ElasticsearchNodesSniffer( restClient, TimeUnit.SECONDS.toMillis(5), ElasticsearchNodesSniffer.Scheme.HTTP); Sniffer sniffer = Sniffer.builder(restClient) .setNodesSniffer(nodesSniffer).build();
此外,可以為高級用例提供自定義NodesSniffer實現,這些用例可能需要從外部源而不是從Elasticsearch獲取節點:
RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http")) .build(); NodesSniffer nodesSniffer = new NodesSniffer() { @Override public Listsniff() throws IOException { return null; } }; Sniffer sniffer = Sniffer.builder(restClient) .setNodesSniffer(nodesSniffer).build();
從外部源獲取主機。
上一篇:通用配置 下一篇:Java High Level REST Client(入門)文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71922.html
摘要:用于的官方高級別客戶端,基于低級別客戶端,它公開特定的方法,并負責請求編組和響應反編組。入門初始化執行請求讀取響應日志記錄通用配置嗅探器在中被添加。依賴于核心項目,它接受與相同的請求參數,并返回相同的響應對象。 Elasticsearch Java REST Client Java REST Client有兩種類型: Java Low Level REST Client:用于Elast...
摘要:讀取響應對象由同步方法返回或作為中的參數接收,它包裝客戶端返回的響應對象并公開一些其他信息。有關執行的請求的信息。返回響應的主機。響應體包含在對象中。對于返回狀態碼的請求,不會拋出,因為它是一個預期的響應,僅表示找不到該資源。 讀取響應 Response對象由同步performRequest方法返回或作為ResponseListener#onSuccess(Response)中的參數接...
閱讀 1490·2021-11-22 13:52
閱讀 1308·2021-09-29 09:34
閱讀 2715·2021-09-09 11:40
閱讀 3038·2019-08-30 15:54
閱讀 1265·2019-08-30 15:53
閱讀 979·2019-08-30 11:01
閱讀 1364·2019-08-29 17:22
閱讀 1957·2019-08-26 10:57