2

我正在尝试使用 Java 的 Flow 框架配置我的 SWF 活动之一,但我找不到任何有关 StartToClose 超时是仅针对单个活动尝试还是针对该活动的所有重试尝试的文档。

这是我的活动的配置:

@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,那么如果单个活动尝试的执行“太长”(例如 100 秒),我该如何让活动失败?
4

1 回答 1

4

StartToClose 超时用于单次活动尝试。SWF 后端本身不支持指数重试,目前作为决策者逻辑实现。如果您对此感到好奇,这里是ExponentialRetry AspectJ 方面的实现。

回答您的问题:

  1. 是的,它会的。
  2. 不。
于 2015-03-31T09:31:45.383 回答