コード例 #1
0
 private void SetupHangfire(IGlobalConfiguration configuration)
 {
     configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
     .UseSimpleAssemblyNameTypeSerializer()
     .UseRecommendedSerializerSettings()
     .UseDefaultActivator()
     .UseMemoryStorage();
 }
コード例 #2
0
ファイル: Startup.cs プロジェクト: rosenbjerg/Memester
 protected void ConfigureHangfire(IGlobalConfiguration hangfireConfiguration)
 {
     hangfireConfiguration
     .SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
     .UseSimpleAssemblyNameTypeSerializer()
     .UseRecommendedSerializerSettings()
     .UsePostgreSqlStorage(_configuration.GetConnectionString("HangfirePgsql"));
 }
コード例 #3
0
 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");
 }
コード例 #4
0
 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
 });
コード例 #5
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());
        }
コード例 #6
0
 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
     });
 }
コード例 #7
0
        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
            }));
        }
コード例 #8
0
        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);
        }
コード例 #9
0
    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
        });
    }
コード例 #10
0
 private static void ConfigureHangfireServer(this IGlobalConfiguration configuration)
 {
     configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170);
     configuration.UseSimpleAssemblyNameTypeSerializer();
     configuration.UseRecommendedSerializerSettings();
 }
コード例 #11
0
        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);
        }