hangfire使用笔记
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}";}}
日志:
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使用笔记相关推荐
- Hangfire 使用笔记
"巨人们"的地址 Hangfire Mysql: https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的 ...
- C#-初识Hangfire
Hangfire 分布式后端作业调度框架服务 概述 特点 版本 基本结构 基本功能及使用 基本功能的部分对象解析 项目引入 拓展 MySqlStorageOptions 数据库配置项 Backgrou ...
- Asp-Net-Core开发笔记:集成Hangfire实现异步任务队列和定时任务
1前言 最近把Python写的数据采集平台往.Net Core上迁移,原本的采集任务使用多进程+线程池的方式来加快采集速度,使用Celery作为异步任务队列兼具定时任务功能,这套东西用着还行,但反正就 ...
- 11月3日云栖精选夜读:《maven实战》读书笔记2——maven安装(windows和eclipse插件)...
前言 由于我的工作中开发环境就是windows,IDE是eclipse,因此安装也只涉及和记录这两部分,在看书和动手的过程也就直接跳过其他部分. 笔记 windows中maven的安装 安装条件 ma ...
- linux任务调度框架,任务调度框架Hangfire 简介
任务调度是我们项目中常见的功能,虽然任务调度的功能实现本身并不难,但一个好用的轮子还是可以给我们的开发的效率提升不少的. 在.net环境中,较为有名的任务调度框架是HangFire与Quartz.NE ...
- 【读书笔记】知易行难,多实践
前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...
- 【运维学习笔记】生命不息,搞事开始。。。
001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...
- SSAN 关系抽取 论文笔记
20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...
- pandas以前笔记
# -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...
最新文章
- linux 可执行文件_linux中ELF二进制程序解析
- 苹果ios鸿蒙,苹果iOS界面一直都很美,鸿蒙系统在这方面,让人担心
- 修改mysql编_修改mysql编码
- 操作系统--用户级线程和内核级线程
- web安全之XSS攻击
- pycharm下自建python包引入失败解决方案
- 硬编码是什么意思_饰品上那些编码和数字你都知道是什么意思吗?
- SpringBoot笔记7:使用JavaMail结合RabbitMQ发送邮件
- 动漫设计系统(基于ASP.NET的动态网站)
- 打造一个无广告无弹窗快速的Windows办公环境(软件推荐)
- Unity 涂涂乐(不使用shader)
- samba 本地设备名已在使用中 此连接尚未恢复
- 铁道部正在研究高铁月票 重申上座率120%准确可靠
- unityshader 晶格化消散
- 数据标注自动化工具 - Snorkel【机器学习】
- 【程序员讲婚庆】婚庆公司
- [转] 理解Web路由
- IMPL2. get_cells/get_pins等获取对象常用命令解析
- PDF2Word v1.40 汉化版
- 如何写好科研论文(论文写作语法练习)
热门文章
- java摇号抽奖程序,Excel真的太强大了,能把抽奖功能做成车牌号摇号程序,真是人才...
- csapp之lab:shell lab
- java中构造方法的理解,super()与构造方法,无参,有参构造方法,this()与构造方法。
- 《JavaEE初阶》HTTP协议和HTTPS
- 学习编程太枯燥?12款助你学编程的免费游戏
- ossim监控mysql_基于OSSIM平台的漏洞扫描详解
- c++之多态性,什么是多态?如何实现?
- 【论文阅读】PAIRWISE LINKAGE FOR POINT CLOUD SEGMENTATION-ISPRS-luxiaohu
- QMetaObjectPrivate meta_constractors Q_INVOKABLE
- 《Hexo: 从零开始编写自己的主题》1. Hexo概述以及Hexo工作原理