1、导入nuget包

2、配置

简单配置后就可以写自己的Job了

注意:Hangfire.RecurringJobExtensions这个扩展支持两种job添加方法:json配置文件和特性。但由于时区使用的是string配置,导致Linux上时区不对,所以扩展一下job的加载方法:

如果不希望在一个job还没执行完成的时候再次进入该job,添加如下过滤器:
/// <summary>/// 每个job都不可重入过滤器/// </summary>public class NotReentryServerHangfireFilter : IServerFilter{/// <summary>/// 判断job是否正在运行/// </summary>static ConcurrentDictionary<string, DateTime> JobRunnings = new ConcurrentDictionary<string, DateTime>();ILogger _logger;public NotReentryServerHangfireFilter(ILogger<NotReentryServerHangfireFilter> logger){_logger = logger;}public void OnPerforming(PerformingContext filterContext){var jobId = BuildJobId(filterContext.BackgroundJob);if(!JobRunnings.TryAdd(jobId, DateTime.Now)){filterContext.Canceled = true;return;}_logger.LogInformation($"{jobId} starting...");}public void OnPerformed(PerformedContext filterContext){var jobId = BuildJobId(filterContext.BackgroundJob);JobRunnings.TryRemove(jobId, out var tmp);_logger.LogInformation($"{jobId} finished.");}public string BuildJobId(BackgroundJob job){return $"{job.Job.Type.FullName}.{job.Job.Method.Name}";}}

dashboard的授权取决于你的自己的身份认证机制了: 
异常:
日志:
日志:
public class HangfireLoggerProvider : ILogProvider{ILoggerFactory _loggerFactory;public HangfireLoggerProvider(ILoggerFactory loggerFactory){_loggerFactory = loggerFactory;}public ILog GetLogger(string name){return new HangfireLogger(_loggerFactory.CreateLogger(name));}}public class HangfireLogger : ILog{ILogger _logger;public HangfireLogger(ILogger logger){_logger = logger;}public bool Log(Hangfire.Logging.LogLevel logLevel, Func<string> messageFunc, Exception exception = null){var msg = messageFunc?.Invoke();if (string.IsNullOrWhiteSpace(msg) && exception == null)return false;switch (logLevel){case Hangfire.Logging.LogLevel.Trace:_logger.LogTrace(0, exception, msg);break;case Hangfire.Logging.LogLevel.Debug:_logger.LogDebug(0, exception, msg);break;case Hangfire.Logging.LogLevel.Info:_logger.LogInformation(0, exception, msg);break;case Hangfire.Logging.LogLevel.Warn:_logger.LogWarning(0, exception, msg);break;case Hangfire.Logging.LogLevel.Error:_logger.LogError(0, exception, msg);break;case Hangfire.Logging.LogLevel.Fatal:_logger.LogCritical(0, exception, msg);break;default:break;}return true;}}

  

  

转载于:https://www.cnblogs.com/pangjianxin/p/8328169.html

hangfire使用笔记相关推荐

  1. Hangfire 使用笔记

    "巨人们"的地址 Hangfire Mysql: https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的 ...

  2. C#-初识Hangfire

    Hangfire 分布式后端作业调度框架服务 概述 特点 版本 基本结构 基本功能及使用 基本功能的部分对象解析 项目引入 拓展 MySqlStorageOptions 数据库配置项 Backgrou ...

  3. Asp-Net-Core开发笔记:集成Hangfire实现异步任务队列和定时任务

    1前言 最近把Python写的数据采集平台往.Net Core上迁移,原本的采集任务使用多进程+线程池的方式来加快采集速度,使用Celery作为异步任务队列兼具定时任务功能,这套东西用着还行,但反正就 ...

  4. 11月3日云栖精选夜读:《maven实战》读书笔记2——maven安装(windows和eclipse插件)...

    前言 由于我的工作中开发环境就是windows,IDE是eclipse,因此安装也只涉及和记录这两部分,在看书和动手的过程也就直接跳过其他部分. 笔记 windows中maven的安装 安装条件 ma ...

  5. linux任务调度框架,任务调度框架Hangfire 简介

    任务调度是我们项目中常见的功能,虽然任务调度的功能实现本身并不难,但一个好用的轮子还是可以给我们的开发的效率提升不少的. 在.net环境中,较为有名的任务调度框架是HangFire与Quartz.NE ...

  6. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  7. 【运维学习笔记】生命不息,搞事开始。。。

    001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...

  8. SSAN 关系抽取 论文笔记

    20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...

  9. pandas以前笔记

    # -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...

最新文章

  1. linux 可执行文件_linux中ELF二进制程序解析
  2. 苹果ios鸿蒙,苹果iOS界面一直都很美,鸿蒙系统在这方面,让人担心
  3. 修改mysql编_修改mysql编码
  4. 操作系统--用户级线程和内核级线程
  5. web安全之XSS攻击
  6. pycharm下自建python包引入失败解决方案
  7. 硬编码是什么意思_饰品上那些编码和数字你都知道是什么意思吗?
  8. SpringBoot笔记7:使用JavaMail结合RabbitMQ发送邮件
  9. 动漫设计系统(基于ASP.NET的动态网站)
  10. 打造一个无广告无弹窗快速的Windows办公环境(软件推荐)
  11. Unity 涂涂乐(不使用shader)
  12. samba 本地设备名已在使用中 此连接尚未恢复
  13. 铁道部正在研究高铁月票 重申上座率120%准确可靠
  14. unityshader 晶格化消散
  15. 数据标注自动化工具 - Snorkel【机器学习】
  16. 【程序员讲婚庆】婚庆公司
  17. [转] 理解Web路由
  18. IMPL2. get_cells/get_pins等获取对象常用命令解析
  19. PDF2Word v1.40 汉化版
  20. 如何写好科研论文(论文写作语法练习)

热门文章

  1. java摇号抽奖程序,Excel真的太强大了,能把抽奖功能做成车牌号摇号程序,真是人才...
  2. csapp之lab:shell lab
  3. java中构造方法的理解,super()与构造方法,无参,有参构造方法,this()与构造方法。
  4. 《JavaEE初阶》HTTP协议和HTTPS
  5. 学习编程太枯燥?12款助你学编程的免费游戏
  6. ossim监控mysql_基于OSSIM平台的漏洞扫描详解
  7. c++之多态性,什么是多态?如何实现?
  8. 【论文阅读】PAIRWISE LINKAGE FOR POINT CLOUD SEGMENTATION-ISPRS-luxiaohu
  9. QMetaObjectPrivate meta_constractors Q_INVOKABLE
  10. 《Hexo: 从零开始编写自己的主题》1. Hexo概述以及Hexo工作原理