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,但是操作的便捷性上个人感觉略差一点意思。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/944404.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Artificial Intelligence篇】AI 前沿探秘:开启智能学习的超维征程

目录 一、人工智能的蓬勃发展与智能学习的重要性: 二、数据的表示与处理 —— 智能学习的基石: 三、构建一个简单的感知机模型 —— 智能学习的初步探索: 四、神经网络 —— 开启超维征程的关键一步: 五、超维挑战与优化 —— 探索智能学习的深度: 六、可视化与交互 —— …

springboot502基于WEB的牙科诊所管理系统(论文+源码)_kaic

牙科诊所管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定牙科诊所管理系统的…

内置ALC的前置放大器D2538A/D3308

一、概述 D2538A/D3308是芯谷科技推出的带有ALC&#xff08;自动电平控制&#xff09;的前置音频放大器芯片&#xff0c;最初产品为单声道/立体声收录机及盒式录音机而开发&#xff0c;作为录音/回放的磁头放大器使用&#xff1b;由于产品的高增益、低噪声及ALC外部可调的特性&…

金仓数据库对象访问权限的管理

基础知识 对象的分类 数据库的表、索引、视图、缺省值、规则、触发器等等&#xff0c;都称为数据库对象&#xff0c;对象分为如下两类: 模式(SCHEMA)对象:可以理解为一个存储目录&#xff0c;包含视图、索引、数据类型、函数和操作符等。非模式对象:其他的数据库对象&#x…

pyQT + OpenCV相关练习

一、设计思路 1、思路分析与设计 本段代码是一个使用 PyQt6 和 OpenCV 创建的图像处理应用程序。其主要功能是通过一个图形界面让用户对图片进行基本的图像处理操作&#xff0c;如灰度化、翻转、旋转、亮度与对比度调整&#xff0c;以及一些滤镜效果&#xff08;模糊、锐化、边…

mac中idea中英文版本切换

1.快捷键command&#xff0c;或者 2.找到插件&#xff08;plugins&#xff09;&#xff0c;搜索chinese&#xff0c;安装 第一次安装好点击应用会提示重启&#xff0c;直接重启就好了&#xff0c;如果已经安装过&#xff0c;只需要切换中英文 3.中英文切换 外观与行为&#xf…

linux 7.6安装mysql 8.0步骤如下

linux 7.6安装mysql 8.0步骤如下&#xff1a; 注意&#xff1a;在导入密钥的时候这个不行&#xff0c;可更换为 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

GEE云计算、多源遥感、高光谱遥感技术蓝碳储量估算;红树林植被指数计算及提取

大气温室气体浓度不断增加&#xff0c;导致气候变暖加剧&#xff0c;随之会引发一系列气象、生态和环境灾害。如何降低温室气体浓度和应对气候变化已成为全球关注的焦点。海洋是地球上最大的“碳库”,“蓝碳”即海洋活动以及海洋生物&#xff08;特别是红树林、盐沼和海草&…

头部固定的响应式jQuery表格插件

jquery.fixme是一款头部固定的响应式jQuery表格插件。该表格通过jQuery来构造固定的表格头效果&#xff0c;在页面向下滚动时&#xff0c;表格头固定在页面的顶部。 在线预览 下载 使用方法 HTML结构 该表格的HTML结构使用标准的HTML表格的结构&#xff1a; <table clas…

系统思考—冰山模型

“卓越不是因机遇而生&#xff0c;而是智慧的选择与用心的承诺。”—— 亚里士多德 卓越&#xff0c;从来不是一次性行为&#xff0c;而是一种习惯。正如我们在日常辅导中常提醒自己&#xff1a;行为的背后&#xff0c;隐藏着选择的逻辑&#xff0c;而选择的根源&#xff0c;源…

基于aspose.words组件的word bytes转pdf bytes,去除水印和解决linux中文乱码问题

详情见 https://preferdoor.top/archives/ji-yu-aspose.wordszu-jian-de-word-byteszhuan-pdf-bytes

文档大师:打造一站式 Word 报告解决方案1

前言 在政府、医院、银行、财务以及销售等领域&#xff0c;常常需要创建各种报告文件来展开工作汇报&#xff0c;譬如季度销售报告、年度总结报告、体检报告和保险合同等。在没有报表工具支持之前&#xff0c;这类报告主要通过 Word 制作&#xff0c;费时费力且难以维护&#…

不安全物联网的轻量级加密:综述

Abstract 本文综述了针对物联网&#xff08;IoT&#xff09;的轻量级加密解决方案。这项综述全面覆盖了从轻量级加密方案到不同类型分组密码的比较等多个方面。同时&#xff0c;还对硬件与软件解决方案之间的比较进行了讨论&#xff0c;并分析了当前最受信赖且研究最深入的分组…

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 4

大家好&#xff0c;我是Q&#xff0c;邮箱&#xff1a;1042484520qq.com。 今天我们在上几讲的基础上再扩展下 Cabin Wi-Fi 的功能需求&#xff0c;讲讲如何使能 5G TCU Wi-Fi STA Bridge 模式。 参考&#xff1a; 实现某海外大型车企&#xff08;T&#xff09;Cabin Wi-Fi 需求…

当视觉提示调优遇到无源领域自适应语义分割

首先将源预训练骨干与冻结参数分为多个阶段&#xff0c;并提出了一个轻量级的提示适配器&#xff0c;用于渐进地将信息性知识编码为提示&#xff0c;并增强相邻骨干阶段之间目标特征的泛化。 同时&#xff0c;设计了一种具有多尺度一致性损失的新型自适应伪标签校正策略&#x…

40.2 预聚合和prometheus-record使用

本节重点介绍 : downsample降采样可以降低查询数据量 prometheus原生不支持downsample 实时查询/聚合 VS 预查询/聚合的优缺点 实时查询/聚合条件随意组合&#xff0c;性能差预查询/聚合 性能好&#xff0c;聚合条件需要提前定义 prometheus的预查询/聚合配置举例 downsample…

Docker安装GPUStack详细教程

目录 前置条件 安装Nvidia Container Tooikit 前置条件 DockerNvidia Container Toolkit 安装Nvidia Container Tooikit 1.安装必要的包 # 更新系统 sudo apt update && sudo apt upgrade -y# 安装 CUDA 相关包 sudo apt-get install -y cuda-drivers nvidia-cuda-…

Intent--组件通信

组件通信1 获取子活动的返回值 创建Activity时实现自动注册&#xff01;【Activity必须要注册才能使用】 默认 LinearLayout 布局&#xff0c;注意 xml 中约束布局的使用&#xff1b; 若需要更改 线性布局 只需要将标签更改为 LinearLayout 即可&#xff0c;记得 设置线性布局…

overleaf中文生僻字显示不正确,显示双线F

我是不想换全文字体的&#xff0c;只是一个生僻字显示不出来&#xff0c;就想要像word一样&#xff0c;把这个生僻字用包含这个生僻字的字体来显示就好了。 解决步骤&#xff1a; 1、使用如下宏包&#xff1a; \usepackage{xeCJK} %声明宏包&#xff0c;主要用于支持在XeTeX…

info There appears to be trouble with your network connection. Retrying

这个错误信息表明你在使用包管理器安装项目依赖时遇到了网络连接问题。 可能的解决方法&#xff1a; 检查当前node.js版本是否过低。 建议使用当前长期支持版本 yarn的淘宝镜像&#xff1a;yarn的淘宝镜像-CSDN博客 nvm常用命令:NVM常用命令-CSDN博客 下载 | Node.js 中文…