簡體   English   中英

我如何知道 AmazonS3Client 是否已關閉?

[英]How can I know if an AmazonS3Client has been shutdown?

有沒有辦法判斷 AmazonS3Client 是否已關閉?

Bellow 是我試圖實現的場景,以避免每次都創建新客戶端,並確保如果其他組件(錯誤地)關閉它,它不會中斷下一個請求。

 private AmazonS3ClientBuilder createBuilder() {

        return AmazonS3ClientBuilder.standard()
                .withCredentials(InstanceProfileCredentialsProvider.getInstance();)
                .withRegion(clientRegion);
    }


    public synchronized AmazonS3 buildAmazonClient() {
        if (s3Client == null || s3Client.*IS_SHUTDOWN?*)
            s3Client = buildAmazonClient();
        return s3Client;
    }

根據亞馬遜 SDK 開發人員指南

SDK 中的服務客戶端是線程安全的,為了獲得最佳性能,您應該將它們視為長期存在的對象。 每個客戶端都有自己的連接池資源

亞馬遜 SDK 參考

這是一個可選方法,調用者不會調用它,但如果他們想顯式釋放任何打開的資源,可以調用它

因此,雖然似乎沒有任何方法可以檢查它是否已經關閉(即客戶端無法再發出請求),但似乎您可以自己管理它,
但你真的不需要:

由於它是一個長期存在的對象,因此您不應創建太多實例,並且一旦您不再計划訪問它們,就可以選擇調用關閉。

如果您確實有一個用例需要在應用程序的整個生命周期中實例化和終止不同的實例,我建議您密切關注shutdown調用,以便您可以判斷它是否已經關閉(盡管一旦資源被釋放,應該不再需要保留對關閉客戶端的引用......)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM