龙空技术网

3个实用定时任务系统解决方案,第3个填补了.NET社区的空白

opendotnet 1740

前言:

而今兄弟们对“vs2019删除解决方案”大致比较重视,姐妹们都需要知道一些“vs2019删除解决方案”的相关知识。那么小编同时在网络上搜集了一些有关“vs2019删除解决方案””的相关内容,希望你们能喜欢,大家一起来了解一下吧!

本文简介

在开发中,我们经常需要执行一些定时任务,比如定期清理缓存、发送通知、数据备份等。.NET Core 作为微软的开源平台,为我们提供了丰富的定时任务解决方案。一说起定时任务系统,很多人首先想到了Hangfire和Quartz.NET,然而本文主要推荐3款开源的定时任务UI系统,其中第3款算是填补了.net在分布式任务系统中的空白,其他两个作为单体系统也是开源界的佼佼者,总之都能开箱即用,且都是以.net core平台开发 。

1、Quartz.NetUI基本介绍

基于.NetCore + Quartz.Net + Vue 开箱即用的定时任务UI。几乎没有上手难度,不依赖数据库,只需在界面做简单配置。

技术架构

1. 编码语言 C#

2. Quartz.Net

3. Vue

项目结构

配置文件目录结构

核心功能概览作业列表

新建作业

修改作业

查看日志

Quartz.NetUI源码地址

2、quartzui基本介绍

基于.NET5.0和Quartz.NET3.2.4的任务调度Web界面管理

功能亮点

1. docker方式开箱即用

2. 内置SQLite持久化

3. 支持 RESTful风格接口

4. 业务代码零污染

5. 语言无关

6. 傻瓜式配置

7. 异常请求邮件通知

如何使用方式1(docker使用)

docker run -v /fileData/quartzuifile:/app/File --restart=unless-stopped --privileged=true --name quartzui -dp 5088:80 bennyzhao/quartzui

一行命令开箱即用,赶快体验下docker的便捷吧!

1、其中/fileData/quartzuifile为映射的文件地址,如SQLite数据库和log日志

2、5088为映射到主机的端口

3、直接在浏览器 ip:5088 即可访问。(注意防火墙是否打开了5088端口,或者在主机测试 curl 127.0.0.1:5088)

方式2(docker部署树莓派)
docker run -v /fileData/quartzuifile:/app/File --restart=unless-stopped --privileged=true --name quartzui -dp 5088:80 bennyzhao/quartzui:RaspberryPi
方式3

可直接通过源码部署到windows或linux平台

更换数据源

默认使用的是SQLite-Microsoft,如果需要使用其他数据源请自行在appsettings.json进行正确配置。如:

"dbProviderName":"OracleODPManaged",

"connectionString": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)));User Id=system;Password=oracle;";

"dbProviderName":"SqlServer",

"connectionString": "Server=localhost;Database=quartznet;User Id={SqlServerUser};Password={SqlServerPassword};";

"dbProviderName":"SQLServerMOT",

"connectionString": "Server=localhost,1444;Database=quartznet;User Id={SqlServerUser};Password={SqlServerPassword};"

"dbProviderName":"MySql", // MySql 测试通过

"connectionString": "Server = localhost; Database = quartznet; Uid = quartznet; Pwd = quartznet";

"dbProviderName":"Npgsql", // Npgsql 测试通过

"connectionString": "Server=127.0.0.1;Port=5432;Userid=quartznet;Password=quartznet;Pooling=true;MinPoolSize=1;MaxPoolSize=20;Timeout=15;SslMode=Disable;Database=quartznet";

"dbProviderName":"SQLite",

"connectionString": "Data Source=test.db;Version=3;";

"dbProviderName":"SQLite-Microsoft", // SQLite-Microsoft 测试通过

"connectionString": "Data Source=test.db;";

"dbProviderName":"Firebird",

"connectionString": "User=SYSDBA;Password=masterkey;Database=/firebird/data/quartz.fdb;DataSource=localhost;Port=3050;Dialect=3;Charset=NONE;Role=;Connection lifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;";

核心功能概览

务必注意

请不要跑在IIS上,因为IIS会自动回收。建议使用docker运行,或者直接用命令dotnet Host.dll。

quartzui源码地址

3、ScheduleMasterCore基本介绍

ScheduleMaster是一个开源的分布式任务调度系统,它基于.Net Core 3平台构建,支持跨平台多节点部署运行。

主要特性

• 简易的Web UI操作;

• 任务动态管理:创建、启动、停止、暂停、恢复、删除等;

• 高可用支持,跨平台多节点部署;

• 数据安全性,不会出现多实例并发调度;

• 支持自定义参数设置;

• 支持.NET Core和.NET Framework(4.6.1+);

• 支持自定义配置文件和热更新;

• 支持设置监护人,运行异常时邮件告警;

• 支持设置任务依赖,自动触发,共享任务结果;

• 插件式开发,任务运行环境隔离;

• 全链路日志系统,运行轨迹轻松掌控;

• 用户访问控制;

• 提供开放REST API,业务系统可以无缝集成;

• 调度报表统计;

• 指定节点运行;

• 支持http任务配置;

• 支持延时任务;

• 支持异常策略配置(失败重试、超时控制等);

• 多数据库类型支持;

使用技术

1. ASP.NET Core3.1

2. EntityFramework Core3.0

3. Mysql5.7

4. Quartz.Net

5. BeyondAdmin

6. Jquery...

系统架构图

如何使用

使用前请准备好所需环境:Visual Studio 2019、**.NET Core3.1 SDK**、Mysql 5.7(可选)、SQLServer(可选)、PostgreSQL(可选)、Centos(可选)、Docker(可选)。

下面以Mysql作为数据库,用配置文件方式启动为例做介绍,其他方式参考详细文档。

下载源码到本地,然后用VS2019打开解决方案并编译通过。

打开项目Hos.ScheduleMaster.Web根目录下的appsettings.json文件,先修改Mysql数据库连接字符串以保证数据库正常访问,再找到NodeSetting节点,修改IP字段为master将要部署的ip地址(master端口为30000不用修改),在项目上右击选择发布到本地文件夹。

打开项目Hos.ScheduleMaster.QuartzHost根目录下的appsettings.json文件,同样先修改Mysql连接字符串,再找到NodeSetting节点,设置worker的名称IdentityName,修改IP字段为将要部署的ip地址,Port字段为要监听的地址(推荐为30001),在项目上右击选择发布...,发布到本地文件夹。如果要新增worker,按同样方式配置IdentityName、IP、Port即可,worker在启动后会把自己的信息注入到数据库中,在master中可以看到。

快速发布小贴士:windows平台下用powershell执行脚本publish.ps1快速发布到d:/sm-publish目录,linux平台下执行脚本sh publish.sh快速发布到/home/sm-publish目录。

其他发布方式亦可。下面以运行2个worker节点为例:

在Windows中运行

1. 找到master的发布目录,执行命令dotnet Hos.ScheduleMaster.Web.dll启动程序,首次启动会自动迁移生成数据库结构并初始化种子数据,打开浏览器输入ip和端口访问即可(初始用户名admin,密码111111)。

2. 找到worker的发布目录,执行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30001启动程序,打开浏览器输入ip和端口会看到一个欢迎页面,表示worker已启动成功。

3. 修改worker下的appsettings.json文件为worker2的配置(如果发布前已经修改可跳过),执行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30002启动程序. 登录到master中,可以看到节点管理菜单下各节点的运行状态。

在Linux(Centos)中运行

运行前请确保机器已经安装好.NET Core3.1运行时环境。

把发布文件复制到Centos中,操作步骤同Windows。

在Docker中运行

在master的发布目录中执行docker build -t ms_master .命令生成master镜像,再执行docker run -d -p 30000:30000 --name="mymaster" ms_master运行容器。
在worker的发布目录中执行docker build -t ms_worker .命令生成worker镜像,再执行docker run -d -p 30001:80 --name="myworker1" ms_worker bash --identity=docker-worker1 --ip=你的宿主机IP --port=30001运行容器启动worker1。
继续执行docker run -d -p 30002:80 --name="myworker2" ms_worker bash --identity=docker-worker2 --ip=你的宿主机IP --port=30002运行容器启动worker2。
执行docker ps查看各容器运行状态,如果运行不起来请检查容器log。
核心功能概览

ScheduleMasterCore源码地址

版权声明:本文来源于网络素材收集整理或网友供稿,版权归版权所有者所有,如有侵权请联系小编予以删除

标签: #vs2019删除解决方案