quartz

震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……

折月煮酒 提交于 2020-08-09 14:22:55
过场CG: 接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为【 定时任务 】的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案:   方案一:使用务定时任务框架quartz;   方案二:使用windows Service服务。 最终的作战方案为:两者配套使用。 前言:项目开发完成后,对接的项目有很多个模块,由于其中的一个环节疏忽,现在需要在原有的基础上把缺失的数据自动写入数据库存储起来。 重新修改程序逻辑已然不现实,现在需要一个补丁来进行逻辑更正。 补丁逻辑:两个入口控制, 入口一:点击【更新】按钮同步逻辑后的数据; 入口二:每天晚上18:00进行执行同步逻辑后的数据; 现在我们先使用window服务进行入口二的编写(入口一只需要一个按钮调用入口二的逻辑即可) windows服务 一、开发环境 操作系统:Windows 7 X64/32 开发环境:VS2017 编程语言:C# .NET版本:.NET Framework 4.6.1 二、创建Windows Service 1、新建一个Windows Service,并将项目名称改为“MyWindowsService”,如下图所示: 2、在解决方案资源管理器内将Service1.cs改为MyWindowsService.cs后并在左边页面空白处点击鼠标右键,添加安装程序

因为我最近忙、所以我写了它

守給你的承諾、 提交于 2020-08-09 05:59:21
一、事出有因 1、上周工作原因项目的事情每天都很忙,周五下班和乐师兄下班的时候已经晚上11点了,然后和师兄吃了一个烧烤吃到了12点了(结果啥也没吃,钱也花了挺多的。ps:程序员建议养生)扯远了 ,主要是一周比较忙周六没有进行我们学校的健康报备信息填写。导致辅导员给我打了6个电话(现在我还是在实习中,所以还归学校管)自己刚好在看网络请求这一块的东西,说干就干!!! 二、知其所以然 1、我们学校的健康报备主要是将自己每天的信息填写到学校的公众号上面。打开页面是这样的。这个时候我们就要想一下我们是要做什么了。首先我们健康报备的流程是=>打开学校公众号=>输入自己的学号点击查询=>然后输入自己的正式情况=>点击提交。 三、反向分析 1、做为程序员的我们首先要清楚我们要什么,现在我们已经清楚了要做什么了和步骤。现在就是用我们的程序模拟用户进行正常的报备工作。首先我将报备链接从学校公众号复制出来,然后使用浏览器访问查看我们在进行报备的时候我们向浏览器发起了什么和做了什么。 2、在左边的是我们的页面,右边的是网页请求的文件和信息,我们就一步一步的进行分析。这里我们可以看到我们在访问页面的时候会生成一些信息_ _EVENTVALIDATION 、 __VIEWSTATEGENERATOR 我以前在长沙写的也是ASPX页面使用控件程序的时候也会生成一些这个

120行代码打造.netcore生产力工具-小而美的后台异步组件

不想你离开。 提交于 2020-08-08 06:59:15
相信绝大部分开发者都接触过用户注册的流程,通常情况下大概的流程如下所示: 接收用户提交注册信息 持久化注册信息(数据库+redis) 发送注册成功短信(邮件) 写操作日志(可选) 伪代码如下: public async Task<IActionResult> Reg([FromBody] User user) { _logger.LogInformation("持久化数据开始"); await Task.Delay(50); _logger.LogInformation("持久化结束"); _logger.LogInformation("发送短信开始"); await Task.Delay(100); _logger.LogInformation("发送短信结束"); _logger.LogInformation("操作日志开始"); await _logRepository.Insert(new Log { Txt = "注册日志" }); _logger.LogInformation("操作日志结束"); return Ok("注册成功"); } 在以上的代码中,我使用Task.Delay方法阻塞主线程,用以模拟实际场景中的执行耗时。以上流程应该是包含了绝大部分注册流程所需要的操作。对于任何开发者来讲,以上业务流程没任何难度,无非是顺序的执行各个流程的代码即可。

2020Java项目框架搭建系列(Java进阶学习路线)

不打扰是莪最后的温柔 提交于 2020-08-06 21:22:22
前言: 已经工作4年,真是时间飞逝。 其实当你在一间公司工作一两年之后,公司用到的开发框架的基本使用你应该都会了。 你会根据一个现有项目A复制一下搭建出另外一个类似框架的项目B,然后在项目B上进行业务逻辑开发。 如果你更努力一点,你可能有去摸索一些配置的作用,一些问题的排查会更有经验和自己的想法。 如果你好奇心更强一点,可能会去了解一些框架的原理,各个框架之间是怎么相互协助工作的。 自己能否从无到有将这些框架串联起来。 想写一系列这样的文章: 将Java项目开发过程中的一些框架,如何一步步串联起来,并且结合源码探索其核心部分原理。 以及项目从小项目演变到大项目的过程中,需要开发框架以及结构变化。 以及特定业务场景设计。 具体概请见下文。 大概使用的开发框架及工具: 基本工具: Eclipse、Maven、Tomcat 前端: Jquery、Vue.js、 Element 后台核心框架: Spring、SpringMVC、MyBatis 后台辅助框架: 日志框架Logback、安全框架Shiro、任务调度框架Quartz 分布式框架: Dubbo、RabbitMQ、Redis………….. 除了这些框架还有一些特定业务场景,以及高扩展高可用的架构演变过程等等。 主要分为下面三个阶段博客提纲。 阶段一:集中式基本架构 一、基本工具: Eclipse、Maven、Tomcat 二

Quartz.Net使用教程

廉价感情. 提交于 2020-08-06 15:37:56
在项目的开发过程中,难免会遇见后需要后台处理的任务,例如定时发送邮件通知、后台处理耗时的数据处理等,这个时候你就需要 Quartz.Net 了。 Quartz.Net 是纯净的,它是一个.Net程序集,是非常流行的Java作业调度系统Quartz的C#实现。 Quartz.Net 一款功能齐全的任务调度系统,从小型应用到大型企业级系统都能适用。功能齐全体现在触发器的多样性上面,即支持简单的定时器,也支持Cron表达式;即能执行重复的作业任务,也支持指定例外的日历;任务也可以是多样性的,只要继承IJob接口即可。 对于小型应用, Quartz.Net 可以集成到你的系统中,对于企业级系统,它提供了Routing支持,提供了Group来组织和管理任务,此外还有持久化、插件功能、负载均衡和故障迁移等满足不同应用场景的需要。 Hello Quartz.Net 开始使用一个框架,和学习一门开发语言一样,最好是从Hello World程序开始。 首先创建一个示例程序,然后添加Quartz.Net的引用。 Install-Package Quartz -Version 3.0.7 我们使用的是当前最新版本3.0.7进行演示。添加引用以后,来创建一个Job类 HelloQuartzJob 。 public class HelloQuartzJob : IJob { public Task

springboot的webapp和app的pom配置文件,方便复制

雨燕双飞 提交于 2020-08-06 09:00:37
一、Springboot-webapp的配置 taskweb--pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.1.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>com.imddysc</groupId> <artifactId>taskweb</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar<

C#作业调度Quartz.NET学习笔记

蓝咒 提交于 2020-08-06 03:52:23
一、简单介绍 Quartz.NET是一个强大、开源、轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于WinForm和ASP.NET应用中。它灵活而不复杂,可以为执行一个作业而创建简单或复杂的作业调度。它有很多特征,如:数据库支持、集群、插件、支持cron-like表达式等等。 官网: http://www.quartz-scheduler.net/ 源码: https://github.com/quartznet/quartznet 示例: http://www.quartz-scheduler.net/documentation/quartz-2.x/quick-start.html 二、概念解释 Scheduler:作业调度器。 IJob:作业接口,继承并实现Execute, 编写执行的具体作业逻辑。 JobBuilder:根据设置,生成一个详细作业信息(JobDetail)。 TriggerBuilder:根据规则,生产对应的Trigger。 三、示例程序 3.1、界面 新建一个WinForm程序Client,项目右键->属性->应用程序->输出类型,选择控制台应用程序。 3.2、引用 项目右键->管理 NuGet 程序包->Quartz.NET。 3.2、作业 新建一个类DataSyncJob并继承IJob

开源 SpringBoot+vueJs 前后端管理系统模版

北城以北 提交于 2020-08-06 02:34:21
管理系统模版 前言 一套管理系统基础模版,提供了些基础功能(包含:系统用户,菜单,权限,调度任务,常量,数据字典等功能) 方便开发人员专注于业务功能开发。 项目前后端分离,前端采用 vue+element-ui,后端采用 spring-boot 项目地址: https://github.com/cuteJ/shop-server (后端) https://github.com/cuteJ/shop-web-mgt (前端) 项目简介 项目结构 前端 src -- 源码目录 ├── api -- API ├── assets -- 图片资源文件 ├── components -- 通用组件 ├── directive -- vue指令 ├── filters -- 过滤器 ├── lang -- 国际化配置 ├── icons -- svg文件 ├── router -- 路由配置 ├── store -- vuex状态管理 ├── styles -- 全局css样式 ├── utils -- 工具类 └── views -- 页面组件 ├── app -- 应用管理(小程序) ├── dashboard -- 首页 ├── errorPage -- 错误页面 ├── layout -- 布局页面 ├── login -- 登录页 ├── profile -- 个人配置 ├──

120行代码打造.netcore生产力工具-小而美的后台异步组件

怎甘沉沦 提交于 2020-08-05 08:28:01
相信绝大部分开发者都接触过用户注册的流程,通常情况下大概的流程如下所示: 接收用户提交注册信息 持久化注册信息(数据库+redis) 发送注册成功短信(邮件) 写操作日志(可选) 伪代码如下: public async Task<IActionResult> Reg([FromBody] User user) { _logger.LogInformation("持久化数据开始"); await Task.Delay(50); _logger.LogInformation("持久化结束"); _logger.LogInformation("发送短信开始"); await Task.Delay(100); _logger.LogInformation("发送短信结束"); _logger.LogInformation("操作日志开始"); await _logRepository.Insert(new Log { Txt = "注册日志" }); _logger.LogInformation("操作日志结束"); return Ok("注册成功"); } 在以上的代码中,我使用Task.Delay方法阻塞主线程,用以模拟实际场景中的执行耗时。以上流程应该是包含了绝大部分注册流程所需要的操作。对于任何开发者来讲,以上业务流程没任何难度,无非是顺序的执行各个流程的代码即可。

THREADPOOLTASKEXECUTOR多线程使用,及线程池配置

廉价感情. 提交于 2020-08-05 04:24:41
1.配置 ThreadPoolTaskExecutor bean <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描注解 --> <context:component-scan base-package="com.qi.quartz"> <context:exclude-filter type="annotation"