zoukankan      html  css  js  c++  java
  • 关于hangfire的使用

    hangfire 是一个分布式后台执行服务。用它可以代替ThreadPool.QueunItemWork等原生方法。当然4.5后的 task也是相当好用且功能强大。不过如果想分布式处理并且可监控的话,hangfire绝对满足需求。

    我使用hangfire更看重监控层面。

    hangfire的执行步骤:

    1.客户端创建一个job任务

    2.持久化job数据

    3.服务端定时fetch数据源

    4.如果规则匹配则通过子线程执行job

    Client端:

    配置:

    public void Configuration(IAppBuilder app)
    {
        app.UseHangfire(config =>
        {
            config.UseSqlServerStorage("<connection string or its name>");
            //config.UseServer();  // 加上这句客户端和服务端就真在一起了
        });
    }
    Enqueue 方法: 放入队列执行。执行后销毁
    BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget"));
     
    Schedule方法: 延迟执行。第二个参数设置延迟时间。
    BackgroundJob.Schedule(() => Console.WriteLine("Delayed"), TimeSpan.FromDays(1));
     
    AddOrUpdate方法:重复执行。第二个参数设置cronexpression表达式。
    参考quartz文档:http://jingyan.baidu.com/article/a3761b2b8e843c1576f9aaac.html
    RecurringJob.AddOrUpdate(() => Console.Write("Recurring"), Cron.Daily);
     
    Server端:
    namespace WindowsService1
    {
        public partial class Service1 : ServiceBase
        {
            private readonly BackgroundJobServer _server;
    
            public Service1()
            {
                InitializeComponent();
    
                JobStorage.Current = new SqlServerStorage("connection_string");
                _server = new BackgroundJobServer();
            }
    
            protected override void OnStart(string[] args)
            {
                _server.Start();
            }
    
            protected override void OnStop()
            {
                _server.Dispose();
            }
        }
    }
  • 相关阅读:
    【翻译】谈 focus 和 blur 的事件代理
    【翻译】细分域名的优势
    Form窗体的Combobox键值对绑定
    日志
    ajaxload
    c#文件整理程序
    每天工作4小时的程序员
    每年这一天
    转载从交友到社交的个人成长
    旅行的意义
  • 原文地址:https://www.cnblogs.com/yuanhuaming/p/4401843.html
Copyright © 2011-2022 走看看