hangfire 创建项目(二)

4 篇文章 0 订阅

创建Hangfire Windows服务

由于 hangfire 在 asp.net 环境有不稳定因素,例如 IIS 中应用程序池默认会在闲时自动休眠、隔一段时间会自动重启等问题,在对可用性要求高的场景就会凸显这种不稳定。我认为更合理的方式是使用 Windows Service 来运行 Hangfire,然后另开一个网站作为 Hangfire 的操控面板。

(一)建立Windows service 项目并引入Hangfire



(二)引入Hangfire

工具->Nuget包管理器->程序包管理器控制台

Install-Package Hangfire.Core
Install-Package Hangfire.MySqlStorage -Version 1.0.5

注意:hangfire支持.NETFramework,Version=v4.6及以上版本,所以创建项目时选好框架。

这里我是用MySql作为Hangfire的Storage。Hangfire 官方在免费版中只提供了 SqlServer 接入的支持,在收费版多一个 Redis。需要 MongoDB、SqlServer 、PostgreSql、SQLite 等其他 Storages 的可以自己寻找第三方的开源项目,这里有一个官方推荐的扩展清单,清单中列出了一些其他种类的 Storages。

(三)初始化Hangfire服务并添加任务

using Hangfire;
using Hangfire.MySql;
using HangFireMySql;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;

namespace HangFireService
{
    public partial class Service1 : ServiceBase
    {
        private BackgroundJobServer _server;
        public Service1()
        {
            InitializeComponent();
            //使用MySql作为 数据库存储  ,记得在配置文件中添加数据库连接字符串
            var storage = new MySqlStorage("gyy_hangfireservice");
            GlobalConfiguration.Configuration.UseStorage(storage);
        }

        protected override void OnStart(string[] args)
        {
            _server = new BackgroundJobServer();
        }

        protected override void OnStop()
        {
            _server.Dispose();
        }
    }
}
在App.config中配置数据库链接
<add name="gyy_hangfireservice" connectionString="Data Source=192.168.0.106; port=3306; Initial Catalog=gyy_hangfire; uid=****; pwd=****;Allow Zero Datetime=True;charset=utf8;" providerName="MySql.Data.MySqlClient" />

(四)为该Windows 服务添加安装程序

在服务的设计视图中右键,选择添加的安装程序


添加服务器名称,描述,StartType等


(五)使用Visual Studio工具安装和卸载服务

  1、用管理员方式打开cmd

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

2、安装命令。找到hangfire 服务的 exe目录

InstallUtil.exe E:\svn\HangFireService\HangFireService\bin\Debug\HangFireService.exe

3、卸载命令。

InstallUtil.exe /u E:\svn\HangFireService\HangFireService\bin\Debug\HangFireService.exe

(六)查看Windows 服务安装是否成功

我的电脑->右键(管理)->服务和应用程序 ->服务。找到生成的服务gyy-hangfire。右键启动即可




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Hangfire 是一个用于 .NET 平台的开源后台作业管理框架,它允许您在 ASP.NET 应用程序中轻松执行后台作业,如发送电子邮件、生成报告、清理数据库等。 Hangfire 提供了一种简单、直观的方式来定义和执行后台作业。您可以使用 Hangfire 在后台执行方法、定时任务、队列任务等。它还提供了一个基于 WEB 的用户界面,以便您可以轻松地查看、管理和监控您的后台作业。 以下是 Hangfire 的一些主要特点: 1. 随时随地启动、停止或暂停后台任务。 2. 支持定时任务、延迟任务和队列任务。 3. 支持多种存储方式,如 SQL Server、PostgreSQL、Redis 等。 4. 提供了一个 WEB 界面,方便您查看后台任务的执行情况。 5. 支持分布式部署,允许多个应用程序使用同一个任务队列。 下面是一个简单的示例代码,演示了如何使用 Hangfire 在后台执行一个方法: ``` public class MyJob { public void DoJob() { // 执行后台任务 Console.WriteLine("Hello, Hangfire!"); } } // 在 Startup.cs 中配置 Hangfire public class Startup { public void Configuration(IAppBuilder app) { // 配置 Hangfire GlobalConfiguration.Configuration.UseSqlServerStorage("connectionString"); app.UseHangfireDashboard(); app.UseHangfireServer(); // 注册后台作业 var job = new MyJob(); BackgroundJob.Enqueue(() => job.DoJob()); } } ``` 在这个示例中,我们首先定义了一个名为 MyJob 的类,其中包含了一个名为 DoJob 的方法。然后,在 Startup.cs 中配置 Hangfire,指定了使用 SQL Server 存储后台任务,并启用了 Hangfire 的 Dashboard 和 Server。最后,我们使用 BackgroundJob.Enqueue 方法注册了一个后台任务,使其在启动应用程序后立即执行。 使用 Hangfire,您可以轻松地实现后台任务管理,并提高应用程序的可靠性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值