[英]Java API to list dataflow job
我正在尝试编写 java 代码来列出数据流作业。 我从https://cloud.google.com/dataflow/docs/reference/rest/v1b3/projects.jobs/list获取了参考,但不推荐使用“GoogleCredential”Class。 我尝试将GoogleCredential
替换为GoogleCredentials
但在下面这一行
Dataflow dataflowService = new Dataflow.Builder(httpTransport, jsonFactory, credential)
.setApplicationName("Google Cloud Platform Sample")
.build();
它需要 HttpRequestInitializer 而不是凭证。
谁能帮助我如何使用凭据本身并解决此问题?
HttpRequestInitializer
需要在失败时执行自动重试。 可以使用com.google.api.client.auth.oauth2.Credential
构造一个简单的HttpRequestInitializer
,如下所示:
private HttpRequestInitializer buildInitializer(Credential credential) {
return httpRequest -> {
// handles abnormal HTTP responses (non 2XX responses)
final HttpUnsuccessfulResponseHandler unsuccessfulResponseHandler =
new HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff())
.setSleeper(Sleeper.DEFAULT);
/*
this is designed to work with only one HttpRequest at a time.
Hence, a new instance of HttpBackOffIOExceptionHandler with new instance of
BackOff is created for each instance of HttpRequest
*/
HttpBackOffIOExceptionHandler httpBackOffIOExceptionHandler =
new HttpBackOffIOExceptionHandler(new ExponentialBackOff()).setSleeper(Sleeper.DEFAULT);
httpRequest.setInterceptor(credential).setUnsuccessfulResponseHandler(unsuccessfulResponseHandler)
.setIOExceptionHandler(httpBackOffIOExceptionHandler)
.setConnectTimeout((int) TimeUnit.MINUTES.toMillis(3))
.setReadTimeout((int) TimeUnit.MINUTES.toMillis(3))
.setThrowExceptionOnExecuteError(false).setSuppressUserAgentSuffix(true);
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.