ASP.NET Core Web API Hangfire
ASP.NET Core Web API Hangfire
- 前言
- 一、安装
- 二、相关代码
- 1.代码片段
- 2.代码片段
- 3.运行效果
- 三、测试代码
- 1.即发即弃作业
- 2.延迟作业
- 3.重复作业
- 4.延续作业
- 5.页面调度作业
前言
👨💻👨🌾📝记录学习成果,以便温故而知新Hangfire是一种定任务调度器
本文使用MySQL服务器
本文也参考了其他人文章的一些思路。
一、安装
NuGet安装
Hangfire.AspNetCore
Hangfire.MySqlStorage
由于选择的MySQL数据库,所以安装Hangfire.MySqlStorage。
二、相关代码
Program.cs中添加代码:
1.代码片段
builder.Services.AddHangfire(config =>
{config.SetDataCompatibilityLevel(CompatibilityLevel.Version_180).UseSimpleAssemblyNameTypeSerializer().UseRecommendedSerializerSettings();config.UseStorage(new MySqlStorage(@"server=127.0.0.1;user=root;password=root;database=hangfiredb;allowuservariables=True;",//必须允许用户自定义参数,不然面板不能使用new MySqlStorageOptions { TablesPrefix = "Hangfire" })).UseHangfireHttpJob();
});builder.Services.AddHangfireServer();
builder.Services.AddTransient<IBackgroundJobClient, BackgroundJobClient>();
MySQL数据连接:
@“server=127.0.0.1;user=root;password=root;database=hangfiredb;allowuservariables=True;”
如下:
.UseHangfireHttpJob()
实现的效果是可以在控制台添加任务调度。
前提是需要安装:
Hangfire.HttpJob
如下代码:
new MySqlStorageOptions { TablesPrefix = “Hangfire” }
是制定数据库中生成的表是以Hangfire开头,如下图:

在测试的时候没有处理好一个小细节,如果代码写成:
new MySqlStorageOptions { TablesPrefix = "Hangfire_" }
将会更好!!!
2.代码片段
app.UseHangfireDashboard();
3.运行效果
http://localhost:5279/hangfire/

三、测试代码
在项目新增控制器HangfireController及一个方法:
[HttpGet("Execute")]
public void Execute(string job)
{Debug.WriteLine(job);
}
在控制台=>作业=>完成 中查看执行效果。
1.即发即弃作业
[HttpGet("test1")]
public string Test1()
{string job = "即发即弃作业";BackgroundJob.Enqueue(() => Execute(job));return job;
}
测试效果:

2.延迟作业
[HttpGet("test2")]
public string Test2()
{string job = "延迟作业";BackgroundJob.Schedule(() => Execute(job), TimeSpan.FromMinutes(1));return job;
}
测试效果:

3.重复作业
[HttpGet("test3")]
public string Test3()
{string job = "重复作业";RecurringJob.AddOrUpdate(job, () => Execute(job), "0 * * * * ?", new RecurringJobOptions(){MisfireHandling = MisfireHandlingMode.Ignorable,TimeZone = TimeZoneInfo.Local,});return job;
}

4.延续作业
[HttpGet("test4")]
public string Test4()
{var jobId = BackgroundJob.Enqueue(() => Execute("延续作业1"));BackgroundJob.ContinueJobWith(jobId, () => Execute("延续作业2"));return "延续作业";
}
测试效果:


5.页面调度作业
[HttpGet("test5")]
public string Test5()
{Debug.WriteLine("页面调度作业:" + DateTime.Now.ToString());return "页面调度作业:" + DateTime.Now.ToString();
}


测试效果:

页面调度作业感觉像xxl-job,但是操作的便捷性上个人感觉略差一点意思。
相关文章:
ASP.NET Core Web API Hangfire
ASP.NET Core Web API Hangfire 前言一、安装二、相关代码1.代码片段2.代码片段3.运行效果 三、测试代码1.即发即弃作业2.延迟作业3.重复作业4.延续作业5.页面调度作业 前言 👨💻👨🌾📝记录学习成果,以…...
E-commerce .net+React(一)——项目初始化
文章目录 项目地址一、创建.Net环境1.1环境配置1.1.1 使用vscode创建webapi1.1.2 Clean architecture结构创建1.1.3 将创建好结构的项目添加到git里1.1.4 EF Core配置1. 在infrastructure里安装EF所需环境2. 创建Product数据模型3. 创建EF Core的DbContext 数据库上下文4. 创建…...
算法每日双题精讲 —— 滑动窗口(水果成篮,找到字符串中所有字母异位词)
🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧!💪…...
C++ 设计模式:享元模式(Flyweight Pattern)
链接:C 设计模式 链接:C 设计模式 - 单例模式 享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享尽可能多的相同对象来减少内存使用和提高性能。享元模式适用于大量细粒度对象的场景,这些对象之…...
Docker+Portainer 离线安装
1. Docker安装 步骤一:官网下载 docker 安装包 步骤二:解压安装包; tar -zxvf docker-24.0.6.tgz 步骤三:将解压之后的docker文件移到 /usr/bin目录下; cp docker/* /usr/bin/ 步骤四:将docker注册成系统服务; vim /etc/sy…...
Linux第100步_Linux之设置LCD作为终端控制台和LCD背光调节
KMS是Kemmel Mode Setting的缩写,内核显示模式设置。它主要负责显示的控制,包括屏幕分辨率、屏幕刷新率和颜色深度等等。 CRTC是指显示控制器,在DRM里有多个显存,通过操作CRTC来控制要显示那个显存。 KMS包含了FB框架。DRM驱动默…...
Chapter09 国际化i18n 和 数据校验:Validation
文章目录 1 Java国际化2 Spring6国际化3 使用Spring6国际化4 数据校验:Validation实验一:通过Validator接口实现实验二:Bean Validation注解实现实验三:基于方法实现校验实验四:实现自定义校验 1 Java国际化 示例&…...
活动预告 | Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁
课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动,了解如何更好地在 Microsoft 365 Defen…...
Unresolved plugin: ‘org.apache.maven.plugins:maven-site-plugin:3.12.1‘
问题 使用idea 社区办加载项目提示下面问题: Unresolved plugin: org.apache.maven.plugins:maven-site-plugin:3.12.1 问题解决 maven插件地址: https://maven.apache.org/plugins/maven-dependency-plugin/plugins.html Maven 中央仓库地址&#…...
5个开源RAG框架对比
还在为RAG应用开发头疼吗?别急,今天给大家推荐五款完全开源免费的RAG框架,覆盖自动优化、多模态处理、本地部署、生产环境支持等多种场景,助你轻松搞定RAG开发!👇 1. AutoRAG:自动优化ÿ…...
活动预告 | Microsoft Power Platform 在线技术公开课:实现业务流程自动化
课程介绍 参加“Microsoft Power Platform 在线技术公开课:实现业务流程自动化”活动,了解如何更高效地开展业务。参加我们举办的本次免费培训活动,了解如何借助 Microsoft AI Builder 和 Power Automate 优化工作流。结合使用这些工具可以帮…...
【分布式文件存储系统Minio】2024.12保姆级教程
文章目录 1.介绍1.分布式文件系统2.基本概念 2.环境搭建1.访问网址2.账号密码都是minioadmin3.创建一个桶4.**Docker安装miniomc突破7天限制**1.拉取镜像2.运行容器3.进行配置1.格式2.具体配置 4.查看桶5.给桶开放权限 3.搭建minio模块1.创建一个oss模块1.在sun-common下创建2.…...
解决ssh和git秘钥认证失败问题
已正确上传公钥到远程服务器,但是本地的连接认证还是使用默认秘钥文件名id_rsa或者默认用户名,导致了认证失败,总结了以下解决办法: 1、ssh秘钥认证 远程登录的时候可能ssh客户端默认使用id_rsa文件名秘钥,但是之前生…...
AI安全的挑战:如何让人工智能变得更加可信
引言 随着人工智能(AI)技术在各个领域的广泛应用,尤其是在医疗、金融、自动驾驶和智能制造等行业,AI正在重塑我们的工作和生活方式。从提高生产效率到实现个性化服务,AI带来了前所未有的便利。然而,在享受这…...
腾讯通RTX升级迁移攻略,兼容Linux内核国产系统及移动端
一、腾讯通RTX继续使用的主要难题 腾讯通RTX停更后,用户不仅无法继续获得更新、技术支持和资源下载,还面临着以下无法解决的使用问题: ● 不兼容国产系统与移动端:腾讯通RTX仅支持Windows和Mac操作系统,无法在基于Li…...
用css实现瀑布流布局
上效果 知识理解 column-count: 4; column-gap: 15px;实现固定四行瀑布流布局 columns: 200px auto;column-gap: 15px;由浏览器根据容器的宽度自动调整,尽可能一行多个200px宽度的列数 <!DOCTYPE html> <html lang"en"><head><me…...
FortiAl为擎重塑网络与安全运营未来
在当今数字化浪潮汹涌的时代,网络安全运营的重要性愈发凸显,而人工智能的迅猛发展则如同一股强劲的东风,为这一领域带来了革命性的变革。Fortinet攻防专家邹国雄在《FortiAI:以生成式人工智能(GenAI)简化Fo…...
优化租赁小程序提升服务效率与用户体验的策略与实践
内容概要 在这个快速发展的商业环境中,租赁小程序成为了提升服务效率和用户体验的重要工具。通过对用户需求的深入挖掘,我们发现他们对于功能的便捷性、响应速度和界面的友好性有着极高的期待。因此,针对这些需求,完善租赁小程序…...
基于Python的医院预约挂号与诊断系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Spring Boot教程之四十:使用 Jasypt 加密 Spring Boot 项目中的密码
如何使用 Jasypt 加密 Spring Boot 项目中的密码 在本文中,我们将学习如何加密 Spring Boot 应用程序配置文件(如 application.properties 或 application.yml)中的数据。在这些文件中,我们可以加密用户名、密码等。 您经常会遇到…...
阿里Live Avatar数字人:从部署到生成视频的完整流程
阿里Live Avatar数字人:从部署到生成视频的完整流程 1. 引言:认识Live Avatar数字人 Live Avatar是阿里巴巴联合高校开源的一款先进数字人视频生成模型。这个强大的工具可以将静态图片、音频和文字描述转化为生动的数字人视频,实现逼真的口…...
Qwen3-VL:30B系统部署:U盘启动盘制作与安装
Qwen3-VL:30B系统部署:U盘启动盘制作与安装 1. 引言 在AI大模型快速发展的今天,本地化部署多模态模型成为许多开发者和企业的迫切需求。Qwen3-VL:30B作为强大的视觉语言模型,能够在离线环境下提供出色的多模态理解能力。但在开始模型部署之…...
PS软件自动化:利用SenseVoice-Small语音指令批量处理图片
PS软件自动化:利用SenseVoice-Small语音指令批量处理图片 你是不是也厌倦了在Photoshop里一遍又一遍地重复那些机械性的操作?给几十张图片统一调整尺寸、批量添加水印、或者对一组照片执行同样的滤镜效果。这些工作既枯燥又耗时,还容易因为手…...
数据库死锁的排查:从现象到根因
在软件测试工作中,数据库的稳定性和数据一致性是评估系统质量的关键维度。死锁问题,作为数据库并发控制中的“顽疾”,其随机性、隐蔽性和破坏性常常让测试人员感到棘手。它不仅是性能测试中的“拦路虎”,更可能在线上引发严重故障…...
从H.264到AV1:主流视频编码标准的演进、选型与实战场景剖析
1. 视频编码标准的发展脉络 我第一次接触视频编码是在2005年,当时用手机拍摄的3GP视频文件总是模糊不清。后来才知道,这背后是MPEG-4 Part 2编码在起作用。如今视频编码技术已经迭代了好几代,从最早的MPEG-2到现在的AV1,每一次升级…...
[具身智能-257]:监督式学习、无监督式学习、半监督式学习、强化学习的概念、差别、代码实现的原理
这四种学习范式,其实就是教机器“如何聪明”的四种不同方法。我们可以把它们想象成四种不同的“教育模式”,每种模式下,机器面临的“考题”和“老师”都不一样。🎓 监督学习:有老师手把手教核心概念 想象一下ÿ…...
Direct Memory内存泄漏排查指南:从JVM参数到Cleaner机制详解
Direct Memory内存泄漏排查指南:从JVM参数到Cleaner机制详解 在Java应用的高性能场景中,Direct Memory(直接内存)因其能够绕过JVM堆内存直接与系统交互的特性,成为提升I/O效率的利器。但这份"利器"往往也是把…...
单片机IO口扩展方案全解析与应用实践
1. 单片机IO口扩展的必要性与挑战作为一名在嵌入式领域摸爬滚打多年的工程师,我经常遇到这样的场景:项目进行到一半,突然发现单片机GPIO口不够用了。这种"资源危机"在中小型项目中尤为常见,特别是当我们使用8位或低引脚…...
实测!用AI从0到1完成一个项目,需要多少token?
用AI编程工具,从零撸图书管理系统全记录现在全网都在聊AI写项目,但没人说真话:纯靠聊天瞎怼需求,到底浪费多少token?步骤乱不乱?代码能不能直接跑?今天不玩虚的,全程实测飞算JavaAI智…...
C++27反射工具链现状全景图(2024Q3):Boost.PFR停更、cpp-reflect弃坑、std::reflect成为唯一工业级选择?
第一章:C27静态反射的标准化演进与战略意义C27静态反射(Static Reflection)正从实验性提案走向核心语言特性,其标准化进程标志着C元编程范式的根本性跃迁。不同于C20的std::is_same_v等类型特征或C23的std::type_identity_t&#…...
