このトピックでは、MaxCompute SDK for Java を使用してエラーログを返す方法について説明します。
説明
MaxCompute SDK for Java は、抽象クラス RetryLogger を提供します。 詳細については、「SDK Java ドキュメント」をご参照ください。
public static abstract class RetryLogger {
/**
* エラー発生後に RestClient が再試行できるようにするコールバック関数。
* @param e
* エラー。
* @param retryCount
* 再試行回数。
* @param retrySleepTime
* 再試行間隔。
*/
public abstract void onRetryLog(Throwable e, long retryCount, long retrySleepTime);
}RetryLogger サブクラスを作成し、odps.getRestClient().setRetryLogger(new UserRetryLogger()); を使用して、システムが MaxCompute オブジェクトを初期化するときにログを返すことができます。
例
// odps の初期化
odps.getRestClient().setRetryLogger(new UserRetryLogger());
// 再試行ロガー
public class UserRetryLogger extends RetryLogger {
@Override
public void onRetryLog(Throwable e, long retryCount, long sleepTime) {
if (e != null && e instanceof OdpsException) {
String requestId = ((OdpsException) e).getRequestId();
if (requestId != null) {
System.err.println(String.format(
"警告: ODPS リクエストが失敗しました。requestID:%s、retryCount:%d、%d 秒後に再試行します。", requestId, retryCount, sleepTime));
return;
}
}
System.err.println(String.format(
"警告: ODPS リクエストが失敗しました。%s、retryCount:%d、%d 秒後に再試行します。", e.getMessage(), retryCount, sleepTime));
}
}