安装Hangfire
在webapi项目中通过nuget安装Hangfire.Core,Hangfire.SqlServer,Hangfire.AspNetCore,截止到目前的最新版本是1.7.6。
使用MSSQL数据库
可以创建一个新的数据库,或者使用现有数据库。
CREATE DATABASE [HangfireTest] GO
设置appsettings.json
{ "ConnectionStrings": { "Hangfire": "Server=.;Database=mssqllocaldb;Integrated Security=SSPI;" }, "Logging": { "LogLevel": { "Default": "Warning", "Hangfire": "Information" } }, "AllowedHosts": "*" }
注册hangfire服务
在startup.cs引用Hangfire和Hangfire.SqlServer,然后注册hangfire服务。
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // 注册Hangfire服务 services.AddHangfire(configuration => configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseSqlServerStorage(Configuration.GetConnectionString("HangfireConnection"), new SqlServerStorageOptions { CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), QueuePollInterval = TimeSpan.Zero, UseRecommendedIsolationLevel = true, UsePageLocksOnDequeue = true, DisableGlobalLocks = true })); services.AddHangfireServer(); services.AddMvc(); }
修改configure方法
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IBackgroundJobClient backgroundJobs, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHangfireDashboard(); backgroundJobs.Enqueue(() => Console.WriteLine("hello from hangfire")); app.UseHttpsRedirection(); app.UseMvc(); }
启动项目
可以看到数据库中自动创建了几张表。
在项目地址后面加上/hangfire进入hangfire任务面板,这个面板可以说和CAP的面板一摸一样了