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();
            }
        }
    }
  • 相关阅读:
    7.21 高博教育 数组 内存
    【基础扎实】Python操作Excel三模块
    PAT 甲级 1012 The Best Rank
    PAT 甲级 1011  World Cup Betting
    PAT 甲级 1010 Radix
    链式线性表——实验及提升训练
    循环程序设计能力自测
    链表应用能力自测
    PAT 甲级 1009 Product of Polynomials
    1008 Elevator (20分)
  • 原文地址:https://www.cnblogs.com/yuanhuaming/p/4401843.html
Copyright © 2011-2022 走看看