我正在尝试使用库 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 相关的作业的仪表板。