49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C#
		
	
	
| using Hangfire;
 | |
| using Hangfire.SqlServer;
 | |
| using Microsoft.Extensions.Configuration;
 | |
| using Microsoft.Extensions.DependencyInjection;
 | |
| using System;
 | |
| using System.Runtime.InteropServices;
 | |
| 
 | |
| namespace IRaCIS.Core.API
 | |
| {
 | |
|     public static class hangfireSetup
 | |
|     {
 | |
|         public static void AddhangfireSetup(this IServiceCollection services, IConfiguration configuration)
 | |
|         {
 | |
|             var hangFireConnStr = configuration.GetSection("ConnectionStrings:Hangfire").Value;
 | |
| 
 | |
|             services.AddHangfire(hangFireConfig =>
 | |
|             {
 | |
|                 //本地window 调试 使用内存,服务器部署使用数据库,防止服务器任务调度到本地
 | |
|                 if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
 | |
|                 {
 | |
|                     hangFireConfig.UseInMemoryStorage();
 | |
| 
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     //指定存储介质
 | |
|                     hangFireConfig.UseSqlServerStorage(hangFireConnStr, new SqlServerStorageOptions()
 | |
|                     {
 | |
|                         SchemaName = "dbo",
 | |
|                     }).UseRecommendedSerializerSettings().UseSimpleAssemblyNameTypeSerializer();
 | |
|                 }
 | |
| 
 | |
| 
 | |
|                 //hangFireConfig.UseTagsWithSql(); //nuget引入Hangfire.Tags.SqlServer
 | |
|                 //.UseHangfireHttpJob();
 | |
| 
 | |
|             });
 | |
| 
 | |
|             services.AddHangfireServer(option =>
 | |
|             {
 | |
|                 //默认15s检查一次
 | |
|                 option.SchedulePollingInterval = TimeSpan.FromSeconds(5);
 | |
|                 option.Queues = new[] { "immediately_once", "default", "sys_init", "not_immediately_once" };
 | |
|             });
 | |
| 
 | |
|         }
 | |
|     }
 | |
| }
 |