问题描述
我正在研究 Microsoft Orleans。我已经在 docker 中设置了一个集群,tt 工作正常。我正在尝试阅读有关消息传递的文档,但在重试时似乎找不到任何内容。如果我有一个叫做grain的grain,就像这样:
public class HelloGrain : Orleans.Grain,IHello
{
private readonly ILogger logger;
private IOtherGrain otherGrain;
public HelloGrain(ILogger<HelloGrain> logger)
{
this.logger = logger;
}
public override async Task OnActivateAsync()
{
otherGrain = GrainFactory.GetGrain(this.GetPrimaryKeyString());
await base.OnActivateAsync();
}
Task<string> IHello.SayHello(string greeting)
{
string otherGrainReturn = await this.otherGrain.MethodAsync();
return Task.Fromresult($"\n Client said: '{greeting}',so HelloGrain says: Hello!");
}
}
string otherGrainReturn = await this.otherGrain.MethodAsync();
是否会在失败时以某种方式重试?是否只有超时决定呼叫何时失败?这是否要作为基本的 HTTP 调用来处理,因此我应该自己重试吗?
如果有一些指向文档的链接,这些文档可以说明更多关于该主题的内容(至少重试一次等),这可能会很棒。
解决方法
您可以看到 here,奥尔良没有任何类型的重试策略。
但是您可以使用一个简单的 try catch
块(或使用像 Polly
这样的特定库)自行添加它。