nuget搜索:Hangfire

安装即可,这里我选择的是 1.7.0-beta1 版本

我是用这个集成到了 mvc api里

这里需要在 Startup 文件里进行如下配置

在配置方法 ConfigureServices 里配置数据库,这是用的是sqlserver数据库初始化

  1. var hangfireConnStr = _configuration["AppSettings:HangfireConnectionString"];
  2. services.AddHangfire(configuration => configuration.UseSqlServerStorage(hangfireConnStr));

如果数据库是mysql,使用下面语句初始化,需要引用 Hangfire.MySql

  1. var hangfireMysqlConnStr = _configuration["AppSettings:HangfireMysqlConnectionString"];
  2. services.AddHangfire(configuration => configuration.UseStorage(
  3. new MySqlStorage(
  4. hangfireMysqlConnStr,
  5. new MySqlStorageOptions
  6. {
  7. TransactionIsolationLevel = IsolationLevel.ReadCommitted,
  8. QueuePollInterval = TimeSpan.FromSeconds(),
  9. JobExpirationCheckInterval = TimeSpan.FromHours(),
  10. CountersAggregateInterval = TimeSpan.FromMinutes(),
  11. PrepareSchemaIfNecessary = true,
  12. DashboardJobListLimit = ,
  13. TransactionTimeout = TimeSpan.FromMinutes(),
  14. TablesPrefix = ""
  15. })));

在配置方法 Configure 里需要配置下管理员后台

  1. app.UseHangfireServer();
  2. app.UseHangfireDashboard();

这样我们就可以通过后台操作管理作业了

地址如下

https://localhost:5001/hangfire

这里可以看到正在跑的作业和执行情况

不过这个后台只能在服务器本机上访问,为了保证安全,无法通过域名访问操作

添加调用代码很简单,在每次系统启动的时候,配置如下,如果没有添加;有了就更新

  1. RecurringJob.AddOrUpdate(() => UpdateMerchIndex(), Cron.MinuteInterval());

这里是指每隔三分钟调用一次 UpdateMerchIndex() 方法。

是不是很简单呢

数据库需要初始化几个表

这里附送数据库初始化建表SQL语句

sqlserver

  1. USE [GEDU_Hangfire]
  2. GO
  3. /****** Object: Table [HangFire].[Job] Script Date: 01/22/2019 14:16:29 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE TABLE [HangFire].[Job](
  9. [Id] [bigint] IDENTITY(1,1) NOT NULL,
  10. [StateId] [bigint] NULL,
  11. [StateName] [nvarchar](20) NULL,
  12. [InvocationData] [nvarchar](max) NOT NULL,
  13. [Arguments] [nvarchar](max) NOT NULL,
  14. [CreatedAt] [datetime] NOT NULL,
  15. [ExpireAt] [datetime] NULL,
  16. CONSTRAINT [PK_HangFire_Job] PRIMARY KEY CLUSTERED
  17. (
  18. [Id] ASC
  19. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  20. ) ON [PRIMARY]
  21. GO
  22. /****** Object: Table [HangFire].[Hash] Script Date: 01/22/2019 14:16:29 ******/
  23. SET ANSI_NULLS ON
  24. GO
  25. SET QUOTED_IDENTIFIER ON
  26. GO
  27. CREATE TABLE [HangFire].[Hash](
  28. [Key] [nvarchar](100) NOT NULL,
  29. [Field] [nvarchar](100) NOT NULL,
  30. [Value] [nvarchar](max) NULL,
  31. [ExpireAt] [datetime2](7) NULL,
  32. CONSTRAINT [PK_HangFire_Hash] PRIMARY KEY CLUSTERED
  33. (
  34. [Key] ASC,
  35. [Field] ASC
  36. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  37. ) ON [PRIMARY]
  38. GO
  39. /****** Object: Table [HangFire].[Counter] Script Date: 01/22/2019 14:16:29 ******/
  40. SET ANSI_NULLS ON
  41. GO
  42. SET QUOTED_IDENTIFIER ON
  43. GO
  44. CREATE TABLE [HangFire].[Counter](
  45. [Key] [nvarchar](100) NOT NULL,
  46. [Value] [int] NOT NULL,
  47. [ExpireAt] [datetime] NULL
  48. ) ON [PRIMARY]
  49. GO
  50. /****** Object: Table [HangFire].[AggregatedCounter] Script Date: 01/22/2019 14:16:29 ******/
  51. SET ANSI_NULLS ON
  52. GO
  53. SET QUOTED_IDENTIFIER ON
  54. GO
  55. CREATE TABLE [HangFire].[AggregatedCounter](
  56. [Key] [nvarchar](100) NOT NULL,
  57. [Value] [bigint] NOT NULL,
  58. [ExpireAt] [datetime] NULL,
  59. CONSTRAINT [PK_HangFire_CounterAggregated] PRIMARY KEY CLUSTERED
  60. (
  61. [Key] ASC
  62. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  63. ) ON [PRIMARY]
  64. GO
  65. /****** Object: Table [HangFire].[Set] Script Date: 01/22/2019 14:16:29 ******/
  66. SET ANSI_NULLS ON
  67. GO
  68. SET QUOTED_IDENTIFIER ON
  69. GO
  70. CREATE TABLE [HangFire].[Set](
  71. [Key] [nvarchar](100) NOT NULL,
  72. [Score] [float] NOT NULL,
  73. [Value] [nvarchar](256) NOT NULL,
  74. [ExpireAt] [datetime] NULL,
  75. CONSTRAINT [PK_HangFire_Set] PRIMARY KEY CLUSTERED
  76. (
  77. [Key] ASC,
  78. [Value] ASC
  79. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  80. ) ON [PRIMARY]
  81. GO
  82. /****** Object: Table [HangFire].[Server] Script Date: 01/22/2019 14:16:29 ******/
  83. SET ANSI_NULLS ON
  84. GO
  85. SET QUOTED_IDENTIFIER ON
  86. GO
  87. CREATE TABLE [HangFire].[Server](
  88. [Id] [nvarchar](100) NOT NULL,
  89. [Data] [nvarchar](max) NULL,
  90. [LastHeartbeat] [datetime] NOT NULL,
  91. CONSTRAINT [PK_HangFire_Server] PRIMARY KEY CLUSTERED
  92. (
  93. [Id] ASC
  94. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  95. ) ON [PRIMARY]
  96. GO
  97. /****** Object: Table [HangFire].[Schema] Script Date: 01/22/2019 14:16:29 ******/
  98. SET ANSI_NULLS ON
  99. GO
  100. SET QUOTED_IDENTIFIER ON
  101. GO
  102. CREATE TABLE [HangFire].[Schema](
  103. [Version] [int] NOT NULL,
  104. CONSTRAINT [PK_HangFire_Schema] PRIMARY KEY CLUSTERED
  105. (
  106. [Version] ASC
  107. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  108. ) ON [PRIMARY]
  109. GO
  110. /****** Object: Table [HangFire].[List] Script Date: 01/22/2019 14:16:29 ******/
  111. SET ANSI_NULLS ON
  112. GO
  113. SET QUOTED_IDENTIFIER ON
  114. GO
  115. CREATE TABLE [HangFire].[List](
  116. [Id] [bigint] IDENTITY(1,1) NOT NULL,
  117. [Key] [nvarchar](100) NOT NULL,
  118. [Value] [nvarchar](max) NULL,
  119. [ExpireAt] [datetime] NULL,
  120. CONSTRAINT [PK_HangFire_List] PRIMARY KEY CLUSTERED
  121. (
  122. [Key] ASC,
  123. [Id] ASC
  124. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  125. ) ON [PRIMARY]
  126. GO
  127. /****** Object: Table [HangFire].[JobQueue] Script Date: 01/22/2019 14:16:29 ******/
  128. SET ANSI_NULLS ON
  129. GO
  130. SET QUOTED_IDENTIFIER ON
  131. GO
  132. CREATE TABLE [HangFire].[JobQueue](
  133. [Id] [int] IDENTITY(1,1) NOT NULL,
  134. [JobId] [bigint] NOT NULL,
  135. [Queue] [nvarchar](50) NOT NULL,
  136. [FetchedAt] [datetime] NULL,
  137. CONSTRAINT [PK_HangFire_JobQueue] PRIMARY KEY CLUSTERED
  138. (
  139. [Queue] ASC,
  140. [Id] ASC
  141. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  142. ) ON [PRIMARY]
  143. GO
  144. /****** Object: Table [HangFire].[State] Script Date: 01/22/2019 14:16:29 ******/
  145. SET ANSI_NULLS ON
  146. GO
  147. SET QUOTED_IDENTIFIER ON
  148. GO
  149. CREATE TABLE [HangFire].[State](
  150. [Id] [bigint] IDENTITY(1,1) NOT NULL,
  151. [JobId] [bigint] NOT NULL,
  152. [Name] [nvarchar](20) NOT NULL,
  153. [Reason] [nvarchar](100) NULL,
  154. [CreatedAt] [datetime] NOT NULL,
  155. [Data] [nvarchar](max) NULL,
  156. CONSTRAINT [PK_HangFire_State] PRIMARY KEY CLUSTERED
  157. (
  158. [JobId] ASC,
  159. [Id] ASC
  160. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  161. ) ON [PRIMARY]
  162. GO
  163. /****** Object: Table [HangFire].[JobParameter] Script Date: 01/22/2019 14:16:29 ******/
  164. SET ANSI_NULLS ON
  165. GO
  166. SET QUOTED_IDENTIFIER ON
  167. GO
  168. CREATE TABLE [HangFire].[JobParameter](
  169. [JobId] [bigint] NOT NULL,
  170. [Name] [nvarchar](40) NOT NULL,
  171. [Value] [nvarchar](max) NULL,
  172. CONSTRAINT [PK_HangFire_JobParameter] PRIMARY KEY CLUSTERED
  173. (
  174. [JobId] ASC,
  175. [Name] ASC
  176. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  177. ) ON [PRIMARY]
  178. GO
  179. /****** Object: ForeignKey [FK_HangFire_JobParameter_Job] Script Date: 01/22/2019 14:16:29 ******/
  180. ALTER TABLE [HangFire].[JobParameter] WITH CHECK ADD CONSTRAINT [FK_HangFire_JobParameter_Job] FOREIGN KEY([JobId])
  181. REFERENCES [HangFire].[Job] ([Id])
  182. ON UPDATE CASCADE
  183. ON DELETE CASCADE
  184. GO
  185. ALTER TABLE [HangFire].[JobParameter] CHECK CONSTRAINT [FK_HangFire_JobParameter_Job]
  186. GO
  187. /****** Object: ForeignKey [FK_HangFire_State_Job] Script Date: 01/22/2019 14:16:29 ******/
  188. ALTER TABLE [HangFire].[State] WITH CHECK ADD CONSTRAINT [FK_HangFire_State_Job] FOREIGN KEY([JobId])
  189. REFERENCES [HangFire].[Job] ([Id])
  190. ON UPDATE CASCADE
  191. ON DELETE CASCADE
  192. GO
  193. ALTER TABLE [HangFire].[State] CHECK CONSTRAINT [FK_HangFire_State_Job]
  194. GO

mysql

  1. /*
  2. Navicat Premium Data Transfer
  3.  
  4. Source Server : mysql47.93.198.115

  5. Source Server Type : MySQL

  6. Source Server Version : 50562

  7. Source Host : 47.93.198.115:3306

  8. Source Schema : gedu_hangfire
  9.  
  10. Target Server Type : MySQL

  11. Target Server Version : 50562

  12. File Encoding : 65001
  13.  
  14. Date: 22/01/2019 14:17:37

  15. */
  16.  
  17. SET NAMES utf8mb4;

  18. SET FOREIGN_KEY_CHECKS = 0;
  19.  
  20. -- ----------------------------

  21. -- Table structure for aggregatedcounter

  22. -- ----------------------------

  23. DROP TABLE IF EXISTS aggregatedcounter;

  24. CREATE TABLE aggregatedcounter (

  25. Id int(11) NOT NULL AUTO_INCREMENT,

  26. </span><span style="color: #0000ff;">Key</span> varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  27. Value int(11) NOT NULL,

  28. ExpireAt datetime NULL DEFAULT NULL,

  29. PRIMARY KEY (Id) USING BTREE,

  30. UNIQUE INDEX IX_CounterAggregated_Key(<span style="color: #0000ff;">Key</span><span style="color: #000000;">) USING BTREE

  31. ) ENGINE = InnoDB AUTO_INCREMENT = 3482 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  32.  
  33. -- ----------------------------

  34. -- Table structure for counter

  35. -- ----------------------------

  36. DROP TABLE IF EXISTS counter;

  37. CREATE TABLE counter (

  38. Id int(11) NOT NULL AUTO_INCREMENT,

  39. </span><span style="color: #0000ff;">Key</span> varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  40. Value int(11) NOT NULL,

  41. ExpireAt datetime NULL DEFAULT NULL,

  42. PRIMARY KEY (Id) USING BTREE,

  43. INDEX IX_Counter_Key(<span style="color: #0000ff;">Key</span><span style="color: #000000;">) USING BTREE

  44. ) ENGINE = InnoDB AUTO_INCREMENT = 17107 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  45.  
  46. -- ----------------------------

  47. -- Table structure for distributedlock

  48. -- ----------------------------

  49. DROP TABLE IF EXISTS distributedlock;

  50. CREATE TABLE distributedlock (

  51. Resource varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  52. CreatedAt datetime NOT NULL

  53. ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  54.  
  55. -- ----------------------------

  56. -- Table structure for hash

  57. -- ----------------------------

  58. DROP TABLE IF EXISTS hash;

  59. CREATE TABLE hash (

  60. Id int(11) NOT NULL AUTO_INCREMENT,

  61. </span><span style="color: #0000ff;">Key</span> varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  62. Field varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  63. Value longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,

  64. ExpireAt datetime NULL DEFAULT NULL,

  65. PRIMARY KEY (Id) USING BTREE,

  66. UNIQUE INDEX IX_Hash_Key_Field(<span style="color: #0000ff;">Key</span><span style="color: #000000;">, Field) USING BTREE

  67. ) ENGINE = InnoDB AUTO_INCREMENT = 29028 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  68.  
  69. -- ----------------------------

  70. -- Table structure for job

  71. -- ----------------------------

  72. DROP TABLE IF EXISTS job;

  73. CREATE TABLE job (

  74. Id int(11) NOT NULL AUTO_INCREMENT,

  75. StateId int(11) NULL DEFAULT NULL,

  76. StateName varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,

  77. InvocationData longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  78. Arguments longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  79. CreatedAt datetime NOT NULL,

  80. ExpireAt datetime NULL DEFAULT NULL,

  81. PRIMARY KEY (Id) USING BTREE,

  82. INDEX IX_Job_StateName(StateName) USING BTREE

  83. ) ENGINE = InnoDB AUTO_INCREMENT = 5703 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  84.  
  85. -- ----------------------------

  86. -- Table structure for jobparameter

  87. -- ----------------------------

  88. DROP TABLE IF EXISTS jobparameter;

  89. CREATE TABLE jobparameter (

  90. Id int(11) NOT NULL AUTO_INCREMENT,

  91. JobId int(11) NOT NULL,

  92. Name varchar(40) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  93. Value longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,

  94. PRIMARY KEY (Id) USING BTREE,

  95. UNIQUE INDEX IX_JobParameter_JobId_Name(JobId, Name) USING BTREE,

  96. INDEX FK_JobParameter_Job(JobId) USING BTREE,

  97. CONSTRAINT FK_JobParameter_Job FOREIGN KEY (JobId) REFERENCES job (Id) ON DELETE CASCADE ON UPDATE CASCADE

  98. ) ENGINE = InnoDB AUTO_INCREMENT = 17107 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  99.  
  100. -- ----------------------------

  101. -- Table structure for jobqueue

  102. -- ----------------------------

  103. DROP TABLE IF EXISTS jobqueue;

  104. CREATE TABLE jobqueue (

  105. Id int(11) NOT NULL AUTO_INCREMENT,

  106. JobId int(11) NOT NULL,

  107. Queue varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  108. FetchedAt datetime NULL DEFAULT NULL,

  109. FetchToken varchar(36) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,

  110. PRIMARY KEY (Id) USING BTREE,

  111. INDEX IX_JobQueue_QueueAndFetchedAt(Queue, FetchedAt) USING BTREE

  112. ) ENGINE = InnoDB AUTO_INCREMENT = 5703 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  113.  
  114. -- ----------------------------

  115. -- Table structure for jobstate

  116. -- ----------------------------

  117. DROP TABLE IF EXISTS jobstate;

  118. CREATE TABLE jobstate (

  119. Id int(11) NOT NULL AUTO_INCREMENT,

  120. JobId int(11) NOT NULL,

  121. Name varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  122. Reason varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,

  123. CreatedAt datetime NOT NULL,

  124. Data longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,

  125. PRIMARY KEY (Id) USING BTREE,

  126. INDEX FK_JobState_Job(JobId) USING BTREE,

  127. CONSTRAINT FK_JobState_Job FOREIGN KEY (JobId) REFERENCES job (Id) ON DELETE CASCADE ON UPDATE CASCADE

  128. ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  129.  
  130. -- ----------------------------

  131. -- Table structure for list

  132. -- ----------------------------

  133. DROP TABLE IF EXISTS list;

  134. CREATE TABLE list (

  135. Id int(11) NOT NULL AUTO_INCREMENT,

  136. </span><span style="color: #0000ff;">Key</span> varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  137. Value longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,

  138. ExpireAt datetime NULL DEFAULT NULL,

  139. PRIMARY KEY (Id) USING BTREE

  140. ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  141.  
  142. -- ----------------------------

  143. -- Table structure for server

  144. -- ----------------------------

  145. DROP TABLE IF EXISTS server;

  146. CREATE TABLE server (

  147. Id varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  148. Data longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  149. LastHeartbeat datetime NULL DEFAULT NULL,

  150. PRIMARY KEY (Id) USING BTREE

  151. ) ENGINE = InnoDB CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  152.  
  153. -- ----------------------------

  154. -- Table structure for set

  155. -- ----------------------------

  156. DROP TABLE IF EXISTS <span style="color: #0000ff;">set</span><span style="color: #000000;">;

  157. CREATE TABLE <span style="color: #0000ff;">set</span><span style="color: #000000;"> (

  158. Id int(11) NOT NULL AUTO_INCREMENT,

  159. </span><span style="color: #0000ff;">Key</span> varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  160. Value varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  161. Score float NOT NULL,

  162. ExpireAt datetime NULL DEFAULT NULL,

  163. PRIMARY KEY (Id) USING BTREE,

  164. UNIQUE INDEX IX_Set_Key_Value(<span style="color: #0000ff;">Key</span><span style="color: #000000;">, Value) USING BTREE

  165. ) ENGINE = InnoDB AUTO_INCREMENT = 95 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  166.  
  167. -- ----------------------------

  168. -- Table structure for state

  169. -- ----------------------------

  170. DROP TABLE IF EXISTS state;

  171. CREATE TABLE state (

  172. Id int(11) NOT NULL AUTO_INCREMENT,

  173. JobId int(11) NOT NULL,

  174. Name varchar(20) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

  175. Reason varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,

  176. CreatedAt datetime NOT NULL,

  177. Data longtext CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL,

  178. PRIMARY KEY (Id) USING BTREE,

  179. INDEX FK_HangFire_State_Job(JobId) USING BTREE,

  180. CONSTRAINT FK_HangFire_State_Job FOREIGN KEY (JobId) REFERENCES job (Id) ON DELETE CASCADE ON UPDATE CASCADE

  181. ) ENGINE = InnoDB AUTO_INCREMENT = 17108 CHARACTER SET = latin1 COLLATE = latin1_swedish_ci ROW_FORMAT = Compact;
  182.  
  183. SET FOREIGN_KEY_CHECKS = 1;

redis配置(Startup.cs 文件里的 ConfigureServices)

  1. //注入Hangfire服务 redis
  2. var hangfireRedisConnStr = Configuration["AppSettings:HangfireRedisConnectionString"];
  3. _redis = ConnectionMultiplexer.Connect(hangfireRedisConnStr);
  4. var prefix = Configuration["AppSettings:HangfireRedisPrefixName"];
  5. var option = new RedisStorageOptions
  6. {
  7. Prefix = prefix,
  8. Db = ,
  9. };
  10. if (int.TryParse(Configuration["AppSettings:HangfireRedisDefaultDatabse"], out int dfaultdb))
  11. {
  12. if (dfaultdb >= && dfaultdb <= )
  13. {
  14. option.Db = dfaultdb;
  15. }
  16. }
  17. services.AddHangfire(config => config.UseRedisStorage(_redis, option));

配置文件

  1. {
  2. "Logging": {
  3. "IncludeScopes": false,
  4. "Debug": {
  5. "LogLevel": {
  6. "Default": "Warning"
  7. }
  8. },
  9. "Console": {
  10. "LogLevel": {
  11. "Default": "Warning"
  12. }
  13. }
  14. },
  15. "AppSettings": {
  16. "HangfireRedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=1,ssl=false,writeBuffer=10240",
  17. "HangfireRedisPrefixName": "{hangfire_muniumini}:",
  18. "HangfireRedisDefaultDatabse": "",
  19. "RedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=1,poolsize=50,ssl=false,writeBuffer=10240",
  20. "UseSwagger": "true"
  21. },
  22. "AllowedHosts": "*"
  23. }

其中AppSetting里的配置说明

HangfireRedisConnectionString(连接字符串,格式参考上面的配置文件)

HangfireRedisPrefixName(redis的字典集名称)

HangfireRedisDefaultDatabse(redis默认数据库序号)

搞定

循序渐进学.Net Core Web Api开发系列【17】:.Net core自动作业之Hangfire的更多相关文章

  1. 循序渐进学.Net Core Web Api开发系列【0】:序言与目录

    一.序言 我大约在2003年时候开始接触到.NET,最初在.NET framework 1.1版本下写过代码,曾经做过WinForm和ASP.NET开发.大约在2010年的时候转型JAVA环境,这么多 ...

  2. 循序渐进学.Net Core Web Api开发系列【16】:应用安全续-加密与解密

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 应用安全除 ...

  3. 循序渐进学.Net Core Web Api开发系列【15】:应用安全

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍W ...

  4. 循序渐进学.Net Core Web Api开发系列【14】:异常处理

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍异 ...

  5. 循序渐进学.Net Core Web Api开发系列【13】:中间件(Middleware)

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...

  6. 循序渐进学.Net Core Web Api开发系列【12】:缓存

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...

  7. 循序渐进学.Net Core Web Api开发系列【11】:依赖注入

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇介绍如 ...

  8. 循序渐进学.Net Core Web Api开发系列【10】:使用日志

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.本篇概述 本篇介 ...

  9. 循序渐进学.Net Core Web Api开发系列【9】:常用的数据库操作

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇描述一 ...

  10. 循序渐进学.Net Core Web Api开发系列【8】:访问数据库(基本功能)

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇讨论如 ...

随机推荐

  1. linux 服务器,登录出现login incorrect

    1.排查是否是登录用户的密码错误 2.查看本机电脑键盘是否有误 3.排查是否是服务器目录全是777权限 注意事项: 原因是您把系统中全部文件的权限改为的777 ,权限混乱,虽然现在可以访问,但是其他文 ...

  2. ZOJ 3681E - Cup 2(记忆化dfs)不好读

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/opm777/article/details/25726221 E - Cup 2 Time Limi ...

  3. PHP include 与 require 区别

    include 与 require 语句同样用于向 PHP 代码中引用文件. include 与 require 有一个巨大的差异:  include 语句引用某个文件并且 PHP 无法找到它,脚本会 ...

  4. 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 ...

  5. P3391 文艺平衡树(Splay)

    题目背景 这是一道经典的Splay模板题--文艺平衡树. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1, ...

  6. JS中常见的兼容

    1.阻止事件冒泡 e.stopPropagation()   ||    e.cancelBubble function stopBubble(e){ if (e.cancelBubble) { e. ...

  7. 2019-9-2-win10-uwp-九幽图床

    title author date CreateTime categories win10 uwp 九幽图床 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 1 ...

  8. ARM-LINUX学习记录

    1:调用C语言函数之前会有一段汇编代码在前面执行来完成软硬件方面的初始化.比如:关闭看门狗:初始化时钟:设置堆栈:调用main函数等.在学习51单片机时候这些操作是由开发环境(如KEIL)在编译C代码 ...

  9. 联想think system sr550信息

    带外管理口 默认IP地址:192.168.70.125 默认用户名密码 USERID PASSW0RD    0是数字0

  10. Django创建工程项目以及工作原理

    一.Django 创建工作项目 1.创建 North 工程项目 (1)使用CMD命令行,切换到指定路径 django-admin.py startproject north (2)使用pycharm创 ...