0

我正在尝试使用库 Hangfire 创建调度程序。创建了一个 ASP.NET Core API 项目,添加了 NuGet 包。(使用 SQLServer 进行存储)

在此处输入图像描述

添加此代码以设置服务器和存储

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    services.AddHangfire(config => config.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
    .UseSimpleAssemblyNameTypeSerializer()
    .UseDefaultTypeSerializer()

    .UseSqlServerStorage(Configuration["ConnectionStrings:HangfireDB"], new SqlServerStorageOptions
    {
        CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
        SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
        QueuePollInterval = TimeSpan.Zero,
        UseRecommendedIsolationLevel = true,
        DisableGlobalLocks = true,
        SchemaName = "Hangfire",
    }));

    services.AddHangfireServer();
    
    services.AddSingleton<IExecuteSimpleJob, ExecuteSimpleJob>();
}

public void Configure(
    IApplicationBuilder app,
    IWebHostEnvironment env,
    IBackgroundJobClient backgroundJobClient,
    IServiceProvider serviceProvider)
{
    //.... Removed some lines here to reduce no of lines
    // 

    app.UseHangfireDashboard();

    recurringJobManager.AddOrUpdate(
        "Execute Simple Job",
        () => serviceProvider.GetService<IExecuteSimpleJob>().Process(),
        "* * * * * ");
}

现在,我正在尝试编写一个类似于AppIp/ScheduleSampleJob的端点(控制器) ,并且请求正文看起来像

{
    "TenantID" : "T1",
    "Cron Expression" : "* * * * *"
}

我想为每个租户以不同的时间表运行相同的作业。

并且重要的是,如果我想查看仅包含与租户 T1 相关的作业的仪表板。

4

0 回答 0