private void SetupHangfire(IGlobalConfiguration configuration) { configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseDefaultActivator() .UseMemoryStorage(); }
protected void ConfigureHangfire(IGlobalConfiguration hangfireConfiguration) { hangfireConfiguration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UsePostgreSqlStorage(_configuration.GetConnectionString("HangfirePgsql")); }
public static void ConfigureHangfire(IGlobalConfiguration configuration) { configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() // we want less dependencies. // and hangfire PostgreSql can't store Nodatime. // Cache size 5000 * 4KB (page) = 20M memory .UseLiteDbStorage($"Filename=Hangfire.db; Mode=Shared; Cache Size=5000; Flush=true"); }
private static void ConfigureHangfire(IServiceProvider provider, IGlobalConfiguration configuration) => configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseDefaultTypeSerializer() .UseRecommendedSerializerSettings() .UseActivator(new ServiceJobActivator(provider.GetService <IServiceScopeFactory>())) .UseFilter(provider.GetService <HangfireJobFilter>()) .UseFilter(new AutomaticRetryAttribute() { Attempts = 0 });
public static IGlobalConfiguration UseApplicationConfiguration(this IGlobalConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } JobFilterProviders.Providers.Add(new CustomJobFilterProvider()); return(configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseRecommendedSerializerSettings() .UseSimpleAssemblyNameTypeSerializer() .UseIgnoredAssemblyVersionTypeResolver() .UseRedisStorage()); }
public static void Set(this IGlobalConfiguration configuration, string connectionString) { configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseSqlServerStorage(connectionString, new SqlServerStorageOptions { CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), QueuePollInterval = TimeSpan.Zero, UseRecommendedIsolationLevel = true, DisableGlobalLocks = true }); }
public static IGlobalConfiguration <SqlServerStorage> GetServiceConfiguration(IGlobalConfiguration configuration) { var settings = SettingsManager.CurrentSettings; return(configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseSqlServerStorage(settings.ConnectionString, new SqlServerStorageOptions { CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), QueuePollInterval = TimeSpan.Zero, UseRecommendedIsolationLevel = true, UsePageLocksOnDequeue = true, DisableGlobalLocks = true })); }
internal static IGlobalConfiguration ConfigHangfireStorage(this IGlobalConfiguration gc, string dbConn, string theProvider) { var hangfireConfig = gc .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseColouredConsoleLogProvider() .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings(); if (theProvider.Equals("SqlServer", StringComparison.OrdinalIgnoreCase)) { hangfireConfig.ConfigSqlServer(dbConn); return(gc); } if (theProvider.Equals("MySql", StringComparison.OrdinalIgnoreCase)) { hangfireConfig.ConfigMySql(dbConn); return(gc); } throw new NotSupportedException("不支持的数据库类型: " + theProvider); }
public static void ConfigureHangfireWithMongoStorage( this IGlobalConfiguration configuration, string connectionString) { configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings(); configuration.UseMongoStorage(connectionString, new MongoStorageOptions { // https://github.com/sergeyzwezdin/Hangfire.Mongo#migration // be careful with migration strategy when updating Hangfire.Mongo package // Note: migration from first to the last version across a few running instances of Scheduler and API can throw exception MigrationOptions = new MongoMigrationOptions { MigrationStrategy = new MigrateMongoMigrationStrategy(), BackupStrategy = new CollectionMongoBackupStrategy() }, CheckConnection = true, // set to Watch for envs with replica sets CheckQueuedJobsStrategy = CheckQueuedJobsStrategy.TailNotificationsCollection }); }
private static void ConfigureHangfireServer(this IGlobalConfiguration configuration) { configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170); configuration.UseSimpleAssemblyNameTypeSerializer(); configuration.UseRecommendedSerializerSettings(); }
static void ConfigureServices(IServiceCollection services) { #region Hangfire配置 //hangfire配置参考: //https://docs.hangfire.io/en/latest/background-processing/processing-jobs-in-console-app.html var redisStorageOptions = new RedisStorageOptions(); redisStorageOptions.Db = 0; //任务过期检查频率 redisStorageOptions.ExpiryCheckInterval = TimeSpan.FromHours(1); redisStorageOptions.DeletedListSize = 10000; redisStorageOptions.SucceededListSize = 350000; if (_redisStorage == null) { _redisStorage = GlobalConfiguration.Configuration.UseRedisStorage(Configuration["HangfireConnection"], redisStorageOptions); _redisStorage.SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseConsole(); } #endregion //services.AddHttpClient(); //ILoggerFactory loggerFactory; #region 日志NLOG /*var nLogConfig = new ConfigurationBuilder() * .SetBasePath(System.IO.Directory.GetCurrentDirectory()) * .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) * .Build(); * LogManager.Configuration = new NLogLoggingConfiguration(nLogConfig.GetSection("NLog"));*/ NLog.LogManager.LoadConfiguration("NLog.Config"); //loggerFactory.AddNLog(); services.AddLogging(loggingBuilder => { // configure Logging with NLog loggingBuilder.ClearProviders(); loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); //loggingBuilder.AddNLog(nLogConfig); loggingBuilder.AddNLog(); }); #endregion #region 注入容器 var containerBuilder = new ContainerBuilder(); //实例化 AutoFac 容器 containerBuilder.RegisterDynamicProxy(); //注册AOP动态代理,目前使用AspectCore//模块化注入,默认注入模块 containerBuilder.Populate(services); //管道寄居 containerBuilder.RegisterModule <DefaultRegisterModule>(); AppContainerBuilder = containerBuilder; ApplicationContainer = containerBuilder.Build();//IUserService UserService 构造 #endregion //ServiceProvider = services.BuildServiceProvider(); ServiceProvider = new AutofacServiceProvider(ApplicationContainer);//将autofac反馈到管道中 //ServiceProvider.GetService<IBootstrapper>().BootstrapAsync(default); //GlobalConfiguration.Configuration.UseAutofacActivator(ApplicationContainer); }