2016-10-21 19 views
0

gcsにいくつかのバイトを書き、Googleが提供するJSON APIラッパーを使用したいがタイムアウトがある。現在、私はこれを持っている:Google Cloud Storageでタイムアウトを設定するJSON API

storage = new Storage 
      .Builder(GoogleNetHttpTransport...) 
StorageObject storageObject = new StorageObject().setBucket(bucket).setName(path); 
Storage.Objects.Insert insertObject = 
       storage.objects().insert(bucket, storageObject, content).setName(path); 
insertObject.execute(); 
    } 

CloudStorageStorageObjectまたは.executeのいずれかにタイムアウトを追加するための簡単な方法はありますか?

答えて

0

ストレージの抽象化import com.google.api.services.storage.Storageは、set timeouts on initializationHttpRequestInitializersというユーザーの資格情報とは別の方法があります。あなたは、各GCS操作のために作成MyGCSAbstractionを持っている場合は、次の操作を行うことができます

private static HttpRequestInitializer setHttpTimeout(final HttpRequestInitializer requestInitializer) { 
    return new HttpRequestInitializer() { 
     @Override 
     public void initialize(HttpRequest httpRequest) throws IOException { 
      requestInitializer.initialize(httpRequest); 
      httpRequest.setConnectTimeout(1000); // ms 
      httpRequest.setReadTimeout(1000); // ms 
     } 
    }; 
} 

MyGCSAbstraction(String applicationName, Credential credential) throws GeneralSecurityException, IOException { 
    Builder builder = new Storage.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), setHttpTimeout(credential)); 
    builder.setApplicationName(applicationName); 
    storage = builder.build(); 
} 
関連する問題