Microsoft Orleans - 谷物叫谷物

Microsoft Orleans - grains calling grains

我正在调查 Microsoft Orleans。我在 docker 中设置了一个集群,tt 运行良好。我正在尝试阅读有关消息传递的文档,但重试时似乎找不到任何内容。如果我有一粒叫一粒粒,像这样:

   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 调用处理的吗,因此我应该自己重试吗?

如果 link 文档可以提供更多有关该主题的信息(至少重试一次等),那会很棒。

您可以看到 here 按照设计,Orleans 没有任何类型的重试策略。

但是你可以自己添加一个简单的 try catch 块(或者使用像 Polly 这样的特定库)。