Orleans 2.0 官方文档 —— 5.5.11 集群和客户端 -> 配置指南 -> 启动任务

启动任务

在许多情况下,一旦silo可用,就需要自动执行某些任务。启动任务提供此功能。

一些用例包括但不限于:

  • 启动后台计时器,以执行周期性的"家务"式的任务
  • 使用从外部的后备存储下载的数据,预加载一些缓存的grain

启动期间从启动任务抛出的任何异常,都会报告在silo日志中,并停止silo。

这种快速失败的方法是Orleans处理silo启动问题的标准方法,旨在允许在测试阶段,轻松检测到silo的配置和/或引导逻辑的任何问题,而不是被静默忽略,并在以后的silo生命周期中导致意外问题。

配置启动任务

可以使用ISiloHostBuilder注册一个要在启动期间调用的委托,或注册一个IStartupTask的实现,来配置启动任务。

示例:注册一个委托

siloHostBuilder.AddStartupTask(
  async (IServiceProvider services, CancellationToken cancellation) =>
  {
    // Use the service provider to get the grain factory.
    var grainFactory = services.GetRequiredService<IGrainFactory>();

    // Get a reference to a grain and call a method on it.
    var grain = grainFactory.GetGrain<IMyGrain>(0);
    await grain.Initialize();
});

示例:注册一个IStartupTask的实现

首先,我们必须定义一个IStartupTask的实现:

public class CallGrainStartupTask : IStartupTask
{
    private readonly IGrainFactory grainFactory;

    public CallGrainStartupTask(IGrainFactory grainFactory)
    {
        this.grainFactory = grainFactory;
    }

    public async Task Execute(CancellationToken cancellationToken)
    {
        var grain = this.grainFactory.GetGrain<IMyGrain>(0);
        await grain.Initialize();
    }
}

然后,必须用ISiloHostBuilder来注册该实现:

siloHostBuilder.AddStartupTask<CallGrainStartupTask>();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值