龙空技术网

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

神码甄选 527

前言:

此刻我们对“vs2019删除解决方案”大概比较关切,同学们都需要学习一些“vs2019删除解决方案”的相关资讯。那么小编在网络上收集了一些对于“vs2019删除解决方案””的相关文章,希望兄弟们能喜欢,我们一起来了解一下吧!

本文简介

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

1、Quartz.NetUI基本介绍

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

技术架构编码语言 C#Quartz.NetVue项目结构配置文件目录结构核心功能概览作业列表新建作业修改作业查看日志Quartz.NetUI源码地址

2、quartzui基本介绍

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

功能亮点docker方式开箱即用内置SQLite持久化支持 RESTful风格接口业务代码零污染语言无关傻瓜式配置异常请求邮件通知如何使用方式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任务配置;支持延时任务;支持异常策略配置(失败重试、超时控制等);多数据库类型支持;使用技术ASP.NET Core3.1EntityFramework Core3.0Mysql5.7Quartz.NetBeyondAdminJquery...系统架构图如何使用

使用前请准备好所需环境: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中运行找到master的发布目录,执行命令dotnet Hos.ScheduleMaster.Web.dll启动程序,首次启动会自动迁移生成数据库结构并初始化种子数据,打开浏览器输入ip和端口访问即可(初始用户名admin,密码111111)。找到worker的发布目录,执行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30001启动程序,打开浏览器输入ip和端口会看到一个欢迎页面,表示worker已启动成功。修改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删除解决方案