检测 java API 调用是否成功完成的最佳方法是什么
What is the best way to detect whether a java API call successfully completed or not
我使用以下代码将目标池添加到 java 中的 Google 计算引擎,使用 Google Compute Engine Java API。
Operation operation = compute.targetPools().insert(PROJECT_ID, REGION_NAME, targetPool).execute();
在执行下一行之前,我需要确保目标池是否已成功添加。在 Google Compute Engine API 中执行此操作的最佳方法是什么?
您尝试过使用 try/catch 块吗?
你可以这样做:
try
{
Operation operation = compute.targetPools().insert(PROJECT_ID, REGION_NAME, targetPool).execute();
}
catch(Exception ex)
{
//Error handling stuff
}
希望对您有所帮助:)
一种可能是检查状态
while(!operation.getStatus().equals("DONE")) {
//wait
System.out.println("Progress: " + operation.getProgress());
}
// Check if Success
if(operation.getError() != null) {
// Handle Error
} else {
// Succeed with Program
}
您需要等到操作状态为DONE,然后检查它是否没有错误。为此,您需要使用 compute."operations"().get() 对操作进行轮询 - 我将操作放在引号中,因为存在三种类型的操作:全局、区域和区域,每个操作其中有自己的服务:globalOperations()、regionOperations() 和 zoneOperations()。由于 targetPools 是区域资源,insert 创建的操作也是区域性的,因此您需要使用 compute().regionOperations().get()。代码:
while (!operation.getStatus().equals("DONE")) {
RegionOperations.Get getOperation = compute.regionOperations().get(
PROJECT_ID, REGION_NAME, operation.getName());
operation = getOperation.execute();
}
if (operation.getError() == null) {
// targetPools has been successfully created
}
我使用以下代码将目标池添加到 java 中的 Google 计算引擎,使用 Google Compute Engine Java API。
Operation operation = compute.targetPools().insert(PROJECT_ID, REGION_NAME, targetPool).execute();
在执行下一行之前,我需要确保目标池是否已成功添加。在 Google Compute Engine API 中执行此操作的最佳方法是什么?
您尝试过使用 try/catch 块吗? 你可以这样做:
try
{
Operation operation = compute.targetPools().insert(PROJECT_ID, REGION_NAME, targetPool).execute();
}
catch(Exception ex)
{
//Error handling stuff
}
希望对您有所帮助:)
一种可能是检查状态
while(!operation.getStatus().equals("DONE")) {
//wait
System.out.println("Progress: " + operation.getProgress());
}
// Check if Success
if(operation.getError() != null) {
// Handle Error
} else {
// Succeed with Program
}
您需要等到操作状态为DONE,然后检查它是否没有错误。为此,您需要使用 compute."operations"().get() 对操作进行轮询 - 我将操作放在引号中,因为存在三种类型的操作:全局、区域和区域,每个操作其中有自己的服务:globalOperations()、regionOperations() 和 zoneOperations()。由于 targetPools 是区域资源,insert 创建的操作也是区域性的,因此您需要使用 compute().regionOperations().get()。代码:
while (!operation.getStatus().equals("DONE")) {
RegionOperations.Get getOperation = compute.regionOperations().get(
PROJECT_ID, REGION_NAME, operation.getName());
operation = getOperation.execute();
}
if (operation.getError() == null) {
// targetPools has been successfully created
}