zoukankan      html  css  js  c++  java
  • ASP.Net MVC with Hangfire

    定时任务迁移到定时任务平台,移除项目中使用的Hangfire。

    代码做备份,以防后续用到

    using System;
    using System.Threading.Tasks;
    using Microsoft.Owin;
    using Owin;
    using Hangfire;
    using System.Diagnostics;
    using HiP.RFQ.BLL;
    using Hangfire.Dashboard;
    
    [assembly: OwinStartup(typeof(HiP.RFQ.UI2.Startup))]
    
    namespace HiP.RFQ.UI2
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
    
                GlobalConfiguration.Configuration.UseSqlServerStorage("HangfireDBConnection");
                app.UseHangfireServer();
                //app.UseHangfireDashboard();
    
                var options = new DashboardOptions
                {
                    Authorization = new[] { new HangfireAuthorizationFilter() },
                    IgnoreAntiforgeryToken=true,
                    DisplayStorageConnectionString=true,
                    IsReadOnlyFunc=context=>false,
                };
                app.UseHangfireDashboard("/hangfire", options);
    
                ////支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。
                //var jobId = BackgroundJob.Enqueue(() => WriteLog("队列任务"));
    
                ////延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行。
                //BackgroundJob.Schedule(() => WriteLog("延时任务"), TimeSpan.FromSeconds(10));
    #if DEBUG
    
                Console.WriteLine("DEBUG:11111111111");
    #else
               //循环任务执行:一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。
                RecurringJob.AddOrUpdate(() => new QuotationService().NotifyBDDirectorforQuotationApprovingJob(), Cron.Daily(7,30), TimeZoneInfo.Local); //注意最小单位是分钟
               //RecurringJob.AddOrUpdate(() => new UserCompanyRoleService().SyncOMGMRoleMemberFromWF(), Cron.Daily(7,30), TimeZoneInfo.Local); //注意最小单位是分钟
    #endif
    
    
                ////延续性任务执行:类似于.NET中的Task,可以在第一个任务执行完之后紧接着再次执行另外的任务
                //BackgroundJob.ContinueJobWith(jobId, () => WriteLog("连续任务"));
            }
            public void WriteLog(string msg)
            {
                Debug.WriteLine($"Hangfire于{DateTime.Now}执行了任务[{msg}]");
            }
        }
    
    
        public class HangfireAuthorizationFilter : IDashboardAuthorizationFilter
        {
            //这里需要配置权限规则
            public bool Authorize(DashboardContext context)
            {
                return new UserService().IsAdmin();
            }
        }
    }
  • 相关阅读:
    底部菜单栏之Fragment的详细介绍和使用方法
    Warm up 2
    如何做好一位资深的web前端工程师
    使用 HTML5 canvas 绘制精美的图形
    计算元素距离浏览器左边的距离
    [JSOI2016]独特的树叶
    【SDOI2009】Elaxia的路线
    【SCOI2009】最长距离
    【SCOI2009】围豆豆
    【AHOI2005】穿越磁场
  • 原文地址:https://www.cnblogs.com/kim-meng/p/12325842.html
Copyright © 2011-2022 走看看