【问题标题】:Retry Option Example in Cadence for java clientJava 客户端的 Cadence 中的重试选项示例
【发布时间】:2020-08-02 03:48:32
【问题描述】:

我正在寻找 java 中 cadence 的重试选项示例,例如我正在尝试下面的代码 sn-p 但似乎没有重试该活动

@ActivityMethod(scheduleToCloseTimeoutSeconds = 30)
@MethodRetry(maximumAttempts = 2, initialIntervalSeconds = 1, expirationSeconds = 30, maximumIntervalSeconds = 30)
String getGreetingContentOverTheWeb(URL url) throws IOException;

对于上述活动,我希望如果失败应该自动重试,下面是我的调用方式

@Override
public String getGreeting(String name) {
    // This is a blocking call that returns only after the activity has completed.
    try {
        String content = activities.getGreetingContentOverTheWeb(new URL("http://localhost:3000/import-map/books"));
        return activities.composeGreeting(content, name);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return activities.composeGreeting("Hello", name);
    
}

如果我在这里做错了什么,请告诉我,

下面是前端截图

【问题讨论】:

  • 工作流执行历史中ActivityTaskScheduled事件的attempt字段的值是多少?
  • 嗨@MaximFateev,为您的查询添加了工作流执行的屏幕截图

标签: java cadence-workflow


【解决方案1】:

从事件历史来看,该活动似乎已重试。我通过查看ActivityTaskStarted.attempt 字段来确定它。那里的次数等于重试次数。因此,活动按照指定的重试策略执行了两次。

我知道这个名字非常令人困惑,因为尝试应该从 1 而不是从 0 开始。我们已经在我的团队维护的 temporal.io Cadence 分支中 fixed this

【讨论】:

  • 谢谢@Maxim Fateev,我重新验证并且重试选项按预期工作,从零开始的重试计数令人困惑,但现在清楚了。
  • 另外,在我开始学习 Cadence 几天后,我意识到 temporal.io (fork of cadence) 有一些新功能,你在上面的评论中也提到了,你推荐 Cadence 还是新项目的时间推进?.
  • 是的,我建议使用 Temporal,因为它由一家专注于外部社区的公司提供支持。当我开始 Cadence 项目并现在领导临时项目以及公司时,我显然有偏见。有关此主题的更多信息,请参阅stackoverflow.com/questions/61157400/…
  • 谢谢@Maxim Fateev,我们也可以从节奏或时间前沿重试吗?对于失败的工作流程?
  • 你可以。但是您希望以一种不会因间歇性错误而失败的方式对您的工作流程进行编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 2013-05-22
  • 2010-11-09
相关资源
最近更新 更多