英文:
Retry Option Example in Cadence for java client
问题
我正在寻找Java中Cadence的重试选项示例,例如,我尝试下面的代码片段,但似乎活动没有重新尝试。
```java
@ActivityMethod(scheduleToCloseTimeoutSeconds = 30)
@MethodRetry(maximumAttempts = 2, initialIntervalSeconds = 1, expirationSeconds = 30, maximumIntervalSeconds = 30)
String getGreetingContentOverTheWeb(URL url) throws IOException;
对于上面的活动,我期望如果它失败,应该自动重新尝试,下面是我如何调用它的方式。
@Override
public String getGreeting(String name) {
// 这是一个阻塞调用,在活动完成后才返回。
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);
}
请告诉我这里是否有任何不正确的地方,
以下是前端的快照
![enter image description here][1]
[1]: https://i.stack.imgur.com/chpxp.png
<details>
<summary>英文:</summary>
I am looking for retry option example for cadence in java, for example I am trying below code snippet but it seems the activity is not re-tried
@ActivityMethod(scheduleToCloseTimeoutSeconds = 30)
@MethodRetry(maximumAttempts = 2, initialIntervalSeconds = 1, expirationSeconds = 30, maximumIntervalSeconds = 30)
String getGreetingContentOverTheWeb(URL url) throws IOException;
for the above activity I am expecting that if it fails should be re-tried automatically, below is how I am calling it
@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);
}
Please let me know if I am doing anything incorrect here,
Below is the snapshot from the frontend
![enter image description here][1]
[1]: https://i.stack.imgur.com/chpxp.png
</details>
# 答案1
**得分**: 1
从事件历史中看,看起来活动已经重试了。我是通过查看 `ActivityTaskStarted.attempt` 字段来确定的。那里的数字等于重试的次数。所以根据指定的重试策略,活动被执行了两次。
我知道这个名称非常令人困惑,因为尝试应该从1开始,而不是从0开始。我们已经在我团队维护的 [temporal.io][2] Cadence 分支中进行了修复。
[1]: https://github.com/temporalio/temporal/pull/554
[2]: https://www.temporal.io/
<details>
<summary>英文:</summary>
From the event history, it looks like the activity is retried. I determined it by looking at the `ActivityTaskStarted.attempt` field. The number there is equal to the number of retries. So activity executed exactly two times as requested per the specified retry policy.
I know that the name is super confusing as attempts should start from 1 and not from 0. We already [fixed this][1] in the [temporal.io][2] Cadence fork my team maintains.
[1]: https://github.com/temporalio/temporal/pull/554
[2]: https://www.temporal.io/
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论