循序渐进学.Net Core Web Api开发系列【17】:.Net core自动作业之Hangfire
nuget搜索:Hangfire
安装即可,这里我选择的是 1.7.0-beta1 版本
我是用这个集成到了 mvc api里
这里需要在 Startup 文件里进行如下配置
在配置方法 ConfigureServices 里配置数据库,这是用的是sqlserver数据库初始化
- var hangfireConnStr = _configuration["AppSettings:HangfireConnectionString"];
- services.AddHangfire(configuration => configuration.UseSqlServerStorage(hangfireConnStr));
如果数据库是mysql,使用下面语句初始化,需要引用 Hangfire.MySql

- var hangfireMysqlConnStr = _configuration["AppSettings:HangfireMysqlConnectionString"];
- services.AddHangfire(configuration => configuration.UseStorage(
- new MySqlStorage(
- hangfireMysqlConnStr,
- new MySqlStorageOptions
- {
- TransactionIsolationLevel = IsolationLevel.ReadCommitted,
- QueuePollInterval = TimeSpan.FromSeconds(),
- JobExpirationCheckInterval = TimeSpan.FromHours(),
- CountersAggregateInterval = TimeSpan.FromMinutes(),
- PrepareSchemaIfNecessary = true,
- DashboardJobListLimit = ,
- TransactionTimeout = TimeSpan.FromMinutes(),
- TablesPrefix = ""
- })));

在配置方法 Configure 里需要配置下管理员后台
- app.UseHangfireServer();
- app.UseHangfireDashboard();
这样我们就可以通过后台操作管理作业了
地址如下
https://localhost:5001/hangfire
这里可以看到正在跑的作业和执行情况
不过这个后台只能在服务器本机上访问,为了保证安全,无法通过域名访问操作
添加调用代码很简单,在每次系统启动的时候,配置如下,如果没有添加;有了就更新
- RecurringJob.AddOrUpdate(() => UpdateMerchIndex(), Cron.MinuteInterval());
这里是指每隔三分钟调用一次 UpdateMerchIndex() 方法。
是不是很简单呢
数据库需要初始化几个表
这里附送数据库初始化建表SQL语句
sqlserver
- USE [GEDU_Hangfire]
- GO
- /****** Object: Table [HangFire].[Job] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[Job](
- [Id] [bigint] IDENTITY(1,1) NOT NULL,
- [StateId] [bigint] NULL,
- [StateName] [nvarchar](20) NULL,
- [InvocationData] [nvarchar](max) NOT NULL,
- [Arguments] [nvarchar](max) NOT NULL,
- [CreatedAt] [datetime] NOT NULL,
- [ExpireAt] [datetime] NULL,
- CONSTRAINT [PK_HangFire_Job] PRIMARY KEY CLUSTERED
- (
- [Id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[Hash] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[Hash](
- [Key] [nvarchar](100) NOT NULL,
- [Field] [nvarchar](100) NOT NULL,
- [Value] [nvarchar](max) NULL,
- [ExpireAt] [datetime2](7) NULL,
- CONSTRAINT [PK_HangFire_Hash] PRIMARY KEY CLUSTERED
- (
- [Key] ASC,
- [Field] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[Counter] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[Counter](
- [Key] [nvarchar](100) NOT NULL,
- [Value] [int] NOT NULL,
- [ExpireAt] [datetime] NULL
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[AggregatedCounter] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[AggregatedCounter](
- [Key] [nvarchar](100) NOT NULL,
- [Value] [bigint] NOT NULL,
- [ExpireAt] [datetime] NULL,
- CONSTRAINT [PK_HangFire_CounterAggregated] PRIMARY KEY CLUSTERED
- (
- [Key] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[Set] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[Set](
- [Key] [nvarchar](100) NOT NULL,
- [Score] [float] NOT NULL,
- [Value] [nvarchar](256) NOT NULL,
- [ExpireAt] [datetime] NULL,
- CONSTRAINT [PK_HangFire_Set] PRIMARY KEY CLUSTERED
- (
- [Key] ASC,
- [Value] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[Server] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[Server](
- [Id] [nvarchar](100) NOT NULL,
- [Data] [nvarchar](max) NULL,
- [LastHeartbeat] [datetime] NOT NULL,
- CONSTRAINT [PK_HangFire_Server] PRIMARY KEY CLUSTERED
- (
- [Id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[Schema] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[Schema](
- [Version] [int] NOT NULL,
- CONSTRAINT [PK_HangFire_Schema] PRIMARY KEY CLUSTERED
- (
- [Version] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[List] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[List](
- [Id] [bigint] IDENTITY(1,1) NOT NULL,
- [Key] [nvarchar](100) NOT NULL,
- [Value] [nvarchar](max) NULL,
- [ExpireAt] [datetime] NULL,
- CONSTRAINT [PK_HangFire_List] PRIMARY KEY CLUSTERED
- (
- [Key] ASC,
- [Id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[JobQueue] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[JobQueue](
- [Id] [int] IDENTITY(1,1) NOT NULL,
- [JobId] [bigint] NOT NULL,
- [Queue] [nvarchar](50) NOT NULL,
- [FetchedAt] [datetime] NULL,
- CONSTRAINT [PK_HangFire_JobQueue] PRIMARY KEY CLUSTERED
- (
- [Queue] ASC,
- [Id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[State] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[State](
- [Id] [bigint] IDENTITY(1,1) NOT NULL,
- [JobId] [bigint] NOT NULL,
- [Name] [nvarchar](20) NOT NULL,
- [Reason] [nvarchar](100) NULL,
- [CreatedAt] [datetime] NOT NULL,
- [Data] [nvarchar](max) NULL,
- CONSTRAINT [PK_HangFire_State] PRIMARY KEY CLUSTERED
- (
- [JobId] ASC,
- [Id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: Table [HangFire].[JobParameter] Script Date: 01/22/2019 14:16:29 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- CREATE TABLE [HangFire].[JobParameter](
- [JobId] [bigint] NOT NULL,
- [Name] [nvarchar](40) NOT NULL,
- [Value] [nvarchar](max) NULL,
- CONSTRAINT [PK_HangFire_JobParameter] PRIMARY KEY CLUSTERED
- (
- [JobId] ASC,
- [Name] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- GO
- /****** Object: ForeignKey [FK_HangFire_JobParameter_Job] Script Date: 01/22/2019 14:16:29 ******/
- ALTER TABLE [HangFire].[JobParameter] WITH CHECK ADD CONSTRAINT [FK_HangFire_JobParameter_Job] FOREIGN KEY([JobId])
- REFERENCES [HangFire].[Job] ([Id])
- ON UPDATE CASCADE
- ON DELETE CASCADE
- GO
- ALTER TABLE [HangFire].[JobParameter] CHECK CONSTRAINT [FK_HangFire_JobParameter_Job]
- GO
- /****** Object: ForeignKey [FK_HangFire_State_Job] Script Date: 01/22/2019 14:16:29 ******/
- ALTER TABLE [HangFire].[State] WITH CHECK ADD CONSTRAINT [FK_HangFire_State_Job] FOREIGN KEY([JobId])
- REFERENCES [HangFire].[Job] ([Id])
- ON UPDATE CASCADE
- ON DELETE CASCADE
- GO
- ALTER TABLE [HangFire].[State] CHECK CONSTRAINT [FK_HangFire_State_Job]
- GO
mysql
- /*
- Navicat Premium Data Transfer
- Source Server : mysql47.93.198.115
- Source Server Type : MySQL
- Source Server Version : 50562
- Source Host : 47.93.198.115:3306
- Source Schema : gedu_hangfire
- Target Server Type : MySQL
- Target Server Version : 50562
- File Encoding : 65001
- Date: 22/01/2019 14:17:37
- */
- SET NAMES utf8mb4;
- SET FOREIGN_KEY_CHECKS = 0;
- -- ----------------------------
- -- Table structure for aggregatedcounter
- -- ----------------------------
- DROP TABLE IF EXISTS
aggregatedcounter
;- CREATE TABLE
aggregatedcounter
(Id
int(11) NOT NULL AUTO_INCREMENT,</span><span style="color: #0000ff;">Key</span>
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Value
int(11) NOT NULL,ExpireAt
datetime NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE,- UNIQUE INDEX
IX_CounterAggregated_Key
(<span style="color: #0000ff;">Key</span><span style="color: #000000;">
) USING BTREE- ) ENGINE = InnoDB AUTO_INCREMENT = 3482 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for counter
- -- ----------------------------
- DROP TABLE IF EXISTS
counter
;- CREATE TABLE
counter
(Id
int(11) NOT NULL AUTO_INCREMENT,</span><span style="color: #0000ff;">Key</span>
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Value
int(11) NOT NULL,ExpireAt
datetime NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE,- INDEX
IX_Counter_Key
(<span style="color: #0000ff;">Key</span><span style="color: #000000;">
) USING BTREE- ) ENGINE = InnoDB AUTO_INCREMENT = 17107 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for distributedlock
- -- ----------------------------
- DROP TABLE IF EXISTS
distributedlock
;- CREATE TABLE
distributedlock
(Resource
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,CreatedAt
datetime NOT NULL- ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for hash
- -- ----------------------------
- DROP TABLE IF EXISTS
hash
;- CREATE TABLE
hash
(Id
int(11) NOT NULL AUTO_INCREMENT,</span><span style="color: #0000ff;">Key</span>
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Field
varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Value
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,ExpireAt
datetime NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE,- UNIQUE INDEX
IX_Hash_Key_Field
(<span style="color: #0000ff;">Key</span><span style="color: #000000;">
,Field
) USING BTREE- ) ENGINE = InnoDB AUTO_INCREMENT = 29028 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for job
- -- ----------------------------
- DROP TABLE IF EXISTS
job
;- CREATE TABLE
job
(Id
int(11) NOT NULL AUTO_INCREMENT,StateId
int(11) NULL DEFAULT NULL,StateName
varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,InvocationData
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Arguments
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,CreatedAt
datetime NOT NULL,ExpireAt
datetime NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE,- INDEX
IX_Job_StateName
(StateName
) USING BTREE- ) ENGINE = InnoDB AUTO_INCREMENT = 5703 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for jobparameter
- -- ----------------------------
- DROP TABLE IF EXISTS
jobparameter
;- CREATE TABLE
jobparameter
(Id
int(11) NOT NULL AUTO_INCREMENT,JobId
int(11) NOT NULL,Name
varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Value
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,- PRIMARY KEY (
Id
) USING BTREE,- UNIQUE INDEX
IX_JobParameter_JobId_Name
(JobId
,Name
) USING BTREE,- INDEX
FK_JobParameter_Job
(JobId
) USING BTREE,- CONSTRAINT
FK_JobParameter_Job
FOREIGN KEY (JobId
) REFERENCESjob
(Id
) ON DELETE CASCADE ON UPDATE CASCADE- ) ENGINE = InnoDB AUTO_INCREMENT = 17107 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for jobqueue
- -- ----------------------------
- DROP TABLE IF EXISTS
jobqueue
;- CREATE TABLE
jobqueue
(Id
int(11) NOT NULL AUTO_INCREMENT,JobId
int(11) NOT NULL,Queue
varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,FetchedAt
datetime NULL DEFAULT NULL,FetchToken
varchar(36) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE,- INDEX
IX_JobQueue_QueueAndFetchedAt
(Queue
,FetchedAt
) USING BTREE- ) ENGINE = InnoDB AUTO_INCREMENT = 5703 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for jobstate
- -- ----------------------------
- DROP TABLE IF EXISTS
jobstate
;- CREATE TABLE
jobstate
(Id
int(11) NOT NULL AUTO_INCREMENT,JobId
int(11) NOT NULL,Name
varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Reason
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,CreatedAt
datetime NOT NULL,Data
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,- PRIMARY KEY (
Id
) USING BTREE,- INDEX
FK_JobState_Job
(JobId
) USING BTREE,- CONSTRAINT
FK_JobState_Job
FOREIGN KEY (JobId
) REFERENCESjob
(Id
) ON DELETE CASCADE ON UPDATE CASCADE- ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for list
- -- ----------------------------
- DROP TABLE IF EXISTS
list
;- CREATE TABLE
list
(Id
int(11) NOT NULL AUTO_INCREMENT,</span><span style="color: #0000ff;">Key</span>
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Value
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,ExpireAt
datetime NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE- ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for server
- -- ----------------------------
- DROP TABLE IF EXISTS
server
;- CREATE TABLE
server
(Id
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Data
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,LastHeartbeat
datetime NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE- ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for set
- -- ----------------------------
- DROP TABLE IF EXISTS
<span style="color: #0000ff;">set</span><span style="color: #000000;">
;- CREATE TABLE
<span style="color: #0000ff;">set</span><span style="color: #000000;">
(Id
int(11) NOT NULL AUTO_INCREMENT,</span><span style="color: #0000ff;">Key</span>
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Value
varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Score
float NOT NULL,ExpireAt
datetime NULL DEFAULT NULL,- PRIMARY KEY (
Id
) USING BTREE,- UNIQUE INDEX
IX_Set_Key_Value
(<span style="color: #0000ff;">Key</span><span style="color: #000000;">
,Value
) USING BTREE- ) ENGINE = InnoDB AUTO_INCREMENT = 95 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- -- ----------------------------
- -- Table structure for state
- -- ----------------------------
- DROP TABLE IF EXISTS
state
;- CREATE TABLE
state
(Id
int(11) NOT NULL AUTO_INCREMENT,JobId
int(11) NOT NULL,Name
varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,Reason
varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,CreatedAt
datetime NOT NULL,Data
longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,- PRIMARY KEY (
Id
) USING BTREE,- INDEX
FK_HangFire_State_Job
(JobId
) USING BTREE,- CONSTRAINT
FK_HangFire_State_Job
FOREIGN KEY (JobId
) REFERENCESjob
(Id
) ON DELETE CASCADE ON UPDATE CASCADE- ) ENGINE = InnoDB AUTO_INCREMENT = 17108 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
- SET FOREIGN_KEY_CHECKS = 1;
redis配置(Startup.cs 文件里的 ConfigureServices)

- //注入Hangfire服务 redis
- var hangfireRedisConnStr = Configuration["AppSettings:HangfireRedisConnectionString"];
- _redis = ConnectionMultiplexer.Connect(hangfireRedisConnStr);
- var prefix = Configuration["AppSettings:HangfireRedisPrefixName"];
- var option = new RedisStorageOptions
- {
- Prefix = prefix,
- Db = ,
- };
- if (int.TryParse(Configuration["AppSettings:HangfireRedisDefaultDatabse"], out int dfaultdb))
- {
- if (dfaultdb >= && dfaultdb <= )
- {
- option.Db = dfaultdb;
- }
- }
- services.AddHangfire(config => config.UseRedisStorage(_redis, option));

配置文件
- {
- "Logging": {
- "IncludeScopes": false,
- "Debug": {
- "LogLevel": {
- "Default": "Warning"
- }
- },
- "Console": {
- "LogLevel": {
- "Default": "Warning"
- }
- }
- },
- "AppSettings": {
- "HangfireRedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=1,ssl=false,writeBuffer=10240",
- "HangfireRedisPrefixName": "{hangfire_muniumini}:",
- "HangfireRedisDefaultDatabse": "",
- "RedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=1,poolsize=50,ssl=false,writeBuffer=10240",
- "UseSwagger": "true"
- },
- "AllowedHosts": "*"
- }
其中AppSetting里的配置说明
HangfireRedisConnectionString(连接字符串,格式参考上面的配置文件)
HangfireRedisPrefixName(redis的字典集名称)
HangfireRedisDefaultDatabse(redis默认数据库序号)
搞定
循序渐进学.Net Core Web Api开发系列【17】:.Net core自动作业之Hangfire的更多相关文章
- 循序渐进学.Net Core Web Api开发系列【0】:序言与目录
一.序言 我大约在2003年时候开始接触到.NET,最初在.NET framework 1.1版本下写过代码,曾经做过WinForm和ASP.NET开发.大约在2010年的时候转型JAVA环境,这么多 ...
- 循序渐进学.Net Core Web Api开发系列【16】:应用安全续-加密与解密
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 应用安全除 ...
- 循序渐进学.Net Core Web Api开发系列【15】:应用安全
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍W ...
- 循序渐进学.Net Core Web Api开发系列【14】:异常处理
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍异 ...
- 循序渐进学.Net Core Web Api开发系列【13】:中间件(Middleware)
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...
- 循序渐进学.Net Core Web Api开发系列【12】:缓存
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...
- 循序渐进学.Net Core Web Api开发系列【11】:依赖注入
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...
- 循序渐进学.Net Core Web Api开发系列【10】:使用日志
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.本篇概述 本篇介 ...
- 循序渐进学.Net Core Web Api开发系列【9】:常用的数据库操作
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇描述一 ...
- 循序渐进学.Net Core Web Api开发系列【8】:访问数据库(基本功能)
系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇讨论如 ...
随机推荐
- linux 服务器,登录出现login incorrect
1.排查是否是登录用户的密码错误 2.查看本机电脑键盘是否有误 3.排查是否是服务器目录全是777权限 注意事项: 原因是您把系统中全部文件的权限改为的777 ,权限混乱,虽然现在可以访问,但是其他文 ...
- ZOJ 3681E - Cup 2(记忆化dfs)不好读
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/opm777/article/details/25726221 E - Cup 2 Time Limi ...
- PHP include 与 require 区别
include 与 require 语句同样用于向 PHP 代码中引用文件. include 与 require 有一个巨大的差异: include 语句引用某个文件并且 PHP 无法找到它,脚本会 ...
- The Complete Javascript Number Reference 转载自:http://www.hunlock.com/blogs/The_Complete_Javascript_Number_Reference
The Complete Javascript Number Reference Filed: Mon, Apr 30 2007 under Programming|| Tags: reference ...
- P3391 文艺平衡树(Splay)
题目背景 这是一道经典的Splay模板题--文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...
- JS中常见的兼容
1.阻止事件冒泡 e.stopPropagation() || e.cancelBubble function stopBubble(e){ if (e.cancelBubble) { e. ...
- 2019-9-2-win10-uwp-九幽图床
title author date CreateTime categories win10 uwp 九幽图床 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 1 ...
- ARM-LINUX学习记录
1:调用C语言函数之前会有一段汇编代码在前面执行来完成软硬件方面的初始化.比如:关闭看门狗:初始化时钟:设置堆栈:调用main函数等.在学习51单片机时候这些操作是由开发环境(如KEIL)在编译C代码 ...
- 联想think system sr550信息
带外管理口 默认IP地址:192.168.70.125 默认用户名密码 USERID PASSW0RD 0是数字0
- Django创建工程项目以及工作原理
一.Django 创建工作项目 1.创建 North 工程项目 (1)使用CMD命令行,切换到指定路径 django-admin.py startproject north (2)使用pycharm创 ...