成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Elasticsearch Java Low Level REST Client(嗅探器)

hiYoHoo / 1268人閱讀

摘要:嗅探器允許從正在運(yùn)行的集群中自動發(fā)現(xiàn)節(jié)點(diǎn)并將它們設(shè)置到現(xiàn)有的實(shí)例的最小的庫,它默認(rèn)使用節(jié)點(diǎn)信息檢索屬于集群的節(jié)點(diǎn),并使用解析獲得的響應(yīng)??梢栽谡业娇蛻舳诵崽狡鞯摹?/p>

嗅探器

允許從正在運(yùn)行的Elasticsearch集群中自動發(fā)現(xiàn)節(jié)點(diǎn)并將它們設(shè)置到現(xiàn)有的RestClient實(shí)例的最小的庫,它默認(rèn)使用節(jié)點(diǎn)信息api檢索屬于集群的節(jié)點(diǎn),并使用jackson解析獲得的json響應(yīng)。

與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具有相同的發(fā)布周期,將版本替換為所需的嗅探器版本,首先使用5.0.0-alpha4發(fā)布版,嗅探器版本與客戶端可以與之通信的Elasticsearch版本之間沒有任何關(guān)系,嗅探器支持從Elasticsearch 2.x及以后來獲取節(jié)點(diǎn)列表。

如果你正在尋找SNAPSHOT版本,可以通過https://snapshots.elastic.co/maven/獲取Elastic Maven Snapshot存儲庫。

Maven配置

以下是如何使用maven作為依賴關(guān)系管理器來配置依賴關(guān)系,將以下內(nèi)容添加到pom.xml文件中:


    org.elasticsearch.client
    elasticsearch-rest-client-sniffer
    6.4.2
Gradle配置

以下是使用gradle作為依賴關(guān)系管理器配置依賴關(guān)系的方法,將以下內(nèi)容添加到build.gradle文件中:

dependencies {
    compile "org.elasticsearch.client:elasticsearch-rest-client-sniffer:6.4.2"
}
使用

一旦創(chuàng)建了RestClient實(shí)例,如初始化中所示,可以將Sniffer與其關(guān)聯(lián),Sniffer將定期使用提供的RestClient(默認(rèn)情況下每隔5分鐘)從集群中獲取當(dāng)前節(jié)點(diǎn)的列表,并通過調(diào)用RestClient#setNodes來更新它們。

RestClient restClient = RestClient.builder(
        new HttpHost("localhost", 9200, "http"))
        .build();
Sniffer sniffer = Sniffer.builder(restClient).build();

關(guān)閉Sniffer以使其后臺線程正確關(guān)閉并釋放其所有資源非常重要,Sniffer對象應(yīng)具有與RestClient相同的生命周期,并在客戶端之前關(guān)閉:

sniffer.close();
restClient.close();

Sniffer默認(rèn)每5分鐘更新一次節(jié)點(diǎn),可以通過提供(以毫秒為單位)來定制此間隔,如下所示:

RestClient restClient = RestClient.builder(
        new HttpHost("localhost", 9200, "http"))
        .build();
Sniffer sniffer = Sniffer.builder(restClient)
        .setSniffIntervalMillis(60000).build();

也可以在失敗時啟用嗅探,這意味著在每次失敗后,節(jié)點(diǎn)列表會立即更新,而不是在下面的普通嗅探輪詢中,在這種情況下,需要首先創(chuàng)建SniffOnFailureListener,并在創(chuàng)建RestClient時提供。此外,一旦稍后創(chuàng)建了Sniffer,它就需要與同一個SniffOnFailureListener實(shí)例相關(guān)聯(lián),該實(shí)例將在每次失敗時得到通知,并使用Sniffer執(zhí)行所述的額外嗅探輪詢。

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); 

將失敗監(jiān)聽器設(shè)置到RestClient實(shí)例中。

在失敗時嗅探,不僅每次失敗后節(jié)點(diǎn)都會更新,但是,在失敗后一分鐘,默認(rèn)情況下,還會比平時安排額外的嗅探輪詢,假設(shè)事情會恢復(fù)正常,我們希望盡快發(fā)現(xiàn)??梢酝ㄟ^setSniffAfterFailureDelayMillis方法在Sniffer創(chuàng)建時自定義所述間隔,請注意,如果未啟用在失敗時嗅探,則此最后一個配置參數(shù)無效,如上所述。

Sniffer實(shí)例設(shè)置到失敗監(jiān)聽器。

Elasticsearch節(jié)點(diǎn)信息api不會返回連接到節(jié)點(diǎn)時使用的協(xié)議,而只返回其host:port鍵值對,因此默認(rèn)情況下使用http,如果應(yīng)該使用https,則必須手動創(chuàng)建ElasticsearchNodesSniffer實(shí)例并按如下方式提供:

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,默認(rèn)為一秒。這是在調(diào)用節(jié)點(diǎn)信息api時作為查詢字符串參數(shù)提供的timeout參數(shù),這樣當(dāng)超時在服務(wù)器端到期時,盡管它可能只包含作為集群一部分的節(jié)點(diǎn)的子集,但在此之前已響應(yīng)的節(jié)點(diǎn)仍會返回有效響應(yīng)。

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實(shí)現(xiàn),這些用例可能需要從外部源而不是從Elasticsearch獲取節(jié)點(diǎn)

RestClient restClient = RestClient.builder(
        new HttpHost("localhost", 9200, "http"))
        .build();
NodesSniffer nodesSniffer = new NodesSniffer() {
    @Override
    public List sniff() throws IOException {
        return null; 
    }
};
Sniffer sniffer = Sniffer.builder(restClient)
        .setNodesSniffer(nodesSniffer).build();

從外部源獲取主機(jī)。

上一篇:通用配置 下一篇:Java High Level REST Client(入門)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71922.html

相關(guān)文章

  • Elasticsearch Java REST Client(目錄)

    摘要:用于的官方高級別客戶端,基于低級別客戶端,它公開特定的方法,并負(fù)責(zé)請求編組和響應(yīng)反編組。入門初始化執(zhí)行請求讀取響應(yīng)日志記錄通用配置嗅探器在中被添加。依賴于核心項(xiàng)目,它接受與相同的請求參數(shù),并返回相同的響應(yīng)對象。 Elasticsearch Java REST Client Java REST Client有兩種類型: Java Low Level REST Client:用于Elast...

    roland_reed 評論0 收藏0
  • Elasticsearch Java Low Level REST Client(讀取響應(yīng))

    摘要:讀取響應(yīng)對象由同步方法返回或作為中的參數(shù)接收,它包裝客戶端返回的響應(yīng)對象并公開一些其他信息。有關(guān)執(zhí)行的請求的信息。返回響應(yīng)的主機(jī)。響應(yīng)體包含在對象中。對于返回狀態(tài)碼的請求,不會拋出,因?yàn)樗且粋€預(yù)期的響應(yīng),僅表示找不到該資源。 讀取響應(yīng) Response對象由同步performRequest方法返回或作為ResponseListener#onSuccess(Response)中的參數(shù)接...

    wangxinarhat 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<