2

Java のフロー フレームワークを使用して SWF アクティビティの 1 つを設定しようとしていますが、StartToClose タイムアウトが 1 回のアクティビティ試行のみに適用されるのか、そのアクティビティのすべての再試行に適用されるのかについてのドキュメントが見つかりません。

私のアクティビティの構成は次のとおりです。

@Activity(name = "WaitForExternalTaskToFinish", version = "1.0")
@ActivityRegistrationOptions(
        defaultTaskScheduleToStartTimeoutSeconds = 60,
        defaultTaskStartToCloseTimeoutSeconds = 60)
@ExponentialRetry(
        initialRetryIntervalSeconds = 60,
        maximumRetryIntervalSeconds = 300,
        retryExpirationSeconds = 7200,
        exceptionsToRetry = IllegalStateException.class)
boolean waitForExternalTaskToFinish(long externalTaskId);

非常に短い実行時間 (例: 5 秒) が予想されるこのアクティビティを取得しようとしていますが、アクティビティが失敗した場合は、アクティビティを 2 時間再試行し続けます。

  • この構成は私が望むことを行いますか?
  • defaultTaskStartToCloseTimeoutSeconds を 7200 に変更する必要がありますか?
  • defaultTaskStartToCloseTimeoutSeconds を 7200 に変更する必要がある場合、1 回のアクティビティ試行の実行が「長すぎる」場合 (例: 100 秒)、アクティビティを失敗させるにはどうすればよいですか?
4

1 に答える 1

4

StartToClose タイムアウトは、1 回のアクティビティ試行用です。指数関数的な再試行は、SWF バックエンドでネイティブにサポートされておらず、現在は決定ロジックとして実装されています。興味がある方は、ExponentialRetry AspectJ アスペクトの実装をご覧ください。

質問への回答:

  1. はい、そうなります。
  2. いいえ。
于 2015-03-31T09:31:45.383 に答える