1. 程式人生 > >TopShelf+Quartz.net實現window定時排程服務

TopShelf+Quartz.net實現window定時排程服務

1、新建控制檯應用,通過nuget安裝Quartz和topshelf、log4net

Install-Package Quartz
Install-Package Common.Logging
Install-Package log4net
Install-Package Topshelf
Install-Package Topshelf.Log4Net

2、建立定時排程QuartzServer類

    public class QuartzServer : ServiceControl, ServiceSuspend
    {
        private readonly IScheduler scheduler;

        public
QuartzServer() { scheduler = StdSchedulerFactory.GetDefaultScheduler(); } public bool Start(HostControl hostControl) { scheduler.Start(); return true; } public bool Stop(HostControl hostControl) { scheduler.Clear(); return
true; } public bool Continue(HostControl hostControl) { scheduler.ResumeAll(); return true; } public bool Pause(HostControl hostControl) { scheduler.PauseAll(); return true; } }

3、建立具體執行的作業類SampleJob

    public class SampleJob:IJob
    {
        public void Execute(IJobExecutionContext context)
        {
            LoggerFactory.Info("SampleJob running...");
        }
    }

4、程式入口

    class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
                {
                x.Service<QuartzServer>();
                x.SetDescription("測試服務");
                x.SetDisplayName("TestService");
                x.SetServiceName("TopShelfQuartzDemo.TestService");
            });
        }
    }

5、quartz配置檔案quartz_jobs.xml:

  <schedule>

    <job>
        <name>SampleJob</name>
        <group>sampleGroup</group>
        <description>Sample job for Quartz</description>
        <job-type>TopShelfQuartzDemo.SampleJob, TopShelfQuartzDemo</job-type>
        <durable>true</durable>
        <recover>false</recover>
    </job>

    <trigger>
      <cron>
        <name>QuartzServerSample</name>
        <group>sampleGroup</group>
        <job-name>SampleJob</job-name>
        <job-group>sampleGroup</job-group>
        <!-- 從start-time起,從0秒開始,每1/5秒執行一次IJob.Execute -->
        <start-time>2017-10-22T00:00:00+08:00</start-time>
        <cron-expression>0/5 * * * * ?</cron-expression>
      </cron>
    </trigger>
  </schedule>

TopShelfQuartzDemo.SampleJob就是我們步驟三建立的SampleJob類的全名

6、quartz.config和Log4Net.config用預設的就可以了

相關推薦

TopShelf+Quartz.net實現window定時排程服務

1、新建控制檯應用,通過nuget安裝Quartz和topshelf、log4net Install-Package Quartz Install-Package Common.Logging Install-Package log4net Install

TopShelf+Quartz.net 實現window服務

exe程序 屬性 easy latest onf runner 效果 新建 suspend Quartz.NET官網 TopShelf 網址 代碼地址:https://github.com/SeaLee02/ProjectDemo/tree/master/Windo

Quartz.Net實現作業定時排程詳解

1、Quartz.NET介紹 Quartz.NET是一個強大、開源、輕量的作業排程框架,你能夠用它來為執行一個作業而建立簡單的或複雜的作業排程。它有很多特徵,如:資料庫支援,叢集,外掛,支援cron-like表示式等等。非常適合在平時的工作中,定時輪詢資料庫同步,定時郵件通知,定時處理資料等。 Quart

Topshelf結合Quartz.NET實現服務端定時調度任務

param eve basedir 定時 鏈接庫 uninstall for 技術 編寫 這周接受到一個新的需求:一天內分時間段定時輪詢一個第三方WebAPI,並保存第三方WebAPI結果。 需求分析:分時段、定時開啟、定時結束、輪詢。主要工作集中在前三個上,輪詢其實就是

C# 定時任務 排程框架 WebWork (Quartz.NET) Web版的Windows服務

說起這個,還是覺得很自豪的(另外這裡還要特別感謝Nick同學),至少目前我沒有見到有這樣現成框架,這個東西主要是用來排程任務的,就是根據時間定時執行一個任務,而這個任務你可以用C# 寫成一個一個的dll ,引用到框架裡就可以了。有UI介面的,我給它起了一個名字叫做WebWo

C#基於Quartz.NET實現任務排程並部署Windows服務

一、Quartz.NET介紹 Quartz.NET是一個強大、開源、輕量的作業排程框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改寫,可用於winform和asp.net mvc、.Net Core應用中。它靈活而不復雜。你能夠用它來為執行一個作業而建立簡單的或複雜的作業

基於zookeeper和quartz實現分散式定時排程

目的 利用zookeeper的特性,來控制quartz實現分散式排程,保證quartz的單點執行,同時解除quartz自身分散式部署對資料庫的依賴,保證同一時刻只有一個quartz應用在執行任務。 實現方式 利用zk的分散式獨佔鎖,控制quartz應用執行節點,讓拿

任務排程~Quartz.net實現簡單的任務除錯

任務排程類似於sqlserver中的作業,即按週期性執行某個程式,程式碼段,或者某種服務,在JAVA環境中出現了Quartz,它可以簡單的實現任務的除錯,而像lucene一樣,它會有對於的.net版本,Quartz.net,今天我們來做一個簡單的實驗,其時很簡單的實驗: 環境:.net4.0+mvc3 功能

RDIFramework.NET框架基於Quartz.Net實現任務排程詳解及效果展示

在上一篇Quartz.Net實現作業定時排程詳解,我們通過例項程式碼詳細講解與演示了基於Quartz.NET開發的詳細方法。本篇我們主要講述基於RDIFramework.NET框架整合Quartz.NET,以實現任務排程,並對任務持久化操作的全過程。本文主要通過以下幾個方面講解: 1、任務排程概述 2

springboot和quartz整合實現動態定時任務(持久化單節點)

依賴 1.5 ostc read 自動 1.8 自動註入 etc string   Quartz是一個完全由java編寫的開源作業調度框架,為在Java應用程序中進行作業調度提供了簡單卻強大的機制,它支持定時任務持久化到數據庫,從而避免了重啟服務器時任務丟失,支持分布式多節

Spring整合Quartz框架實現分散式定時任務

1、叢集使用定時任務的問題:    目前大部分在叢集中處理定時任務的方式不是正真的分散式處理方式,而是一種偽分散式,這種方式存在一個明顯的缺陷就是當叢集中機器宕機, 那麼整個定時任務就會掛掉或者不能一次性跑完,會對業務產生嚴重的影響。   而且在叢集環境中,

Spring 3整合Quartz 2實現動態定時任務

一、 說明      在做公司的一款產品過程中要實現定時任務功能,而且這款產品是面向不同客戶的,因此具體執行的任務不固定,定時週期也不固定,所以就用到了quartz來實現這個功能。     需要說明的是spring3.1以下的版本必須使用quartz1.

quartz spring 實現動態定時任務

在實際專案應用中經常會用到定時任務,可以通過quartz和spring的簡單配置即可完成,但如果要改變任務的執行時間、頻率,廢棄任務等就需要改變配置甚至程式碼需要重啟伺服器,這裡介紹一下如何通過quartz與spring的組合實現動態的改變定時任務的狀態的一個實現。

quartz java實現定時任務框架

概述瞭解Quartz體系結構Quartz對任務排程的領域問題進行了高度的抽象,提出了排程器、任務和觸發器這3個核心的概念,並在org.quartz通過介面和類對重要的這些核心概念進行描述:●Job:是一個介面,只有一個方法void execute(JobExecution

Window服務基於Quartz.Net元件實現定時任務排程(二)

前言:    在上一章中,我們通過利用控制檯實現定時任務排程,已經大致瞭解瞭如何基於Quartz.Net元件實現任務,至少包括三部分:job(作業),trigger(觸發器),scheduler(排程器)。其中job是需要在一個定時任務中具體執行的業務邏輯,trigger通過規定job何

控制檯基於Quartz.Net元件實現定時任務排程(一)

前言:    你曾經需要應用執行一個任務嗎?比如現在有一個需求,需要每天在零點定時執行一些操作,那應該怎樣操作呢?    這個時候,如果你和你的團隊是用.NET程式設計的話,可以考慮使用Quartz.NET排程器。允許開發人員根據日期間隔來實現任務排程任務。非常

使用 Topshelf 元件一步一步建立 Windows 服務 (2) 使用Quartz.net 排程

上一篇說了如何使用 Topshelf 元件快速建立Windows服務,接下來介紹如何使用 Quartz.net 關於Quartz.net的好處,網上搜索都是一大把一大把的,我就不再多介紹。 先介紹需要用到的外掛: Quartz版本我用的 2.6.2的, 沒有用3.0以上的,因為你用了就會知道,會打

在ASP.NET Core中建立基於Quartz.NET託管服務輕鬆實現作業排程

在這篇文章中,我將介紹如何使用[ASP.NET Core託管服務](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1)執行Quartz.NET作業。這樣的好處是我

基於MVC 的Quartz.Net組件實現定時執行任務調度

創建 .get 關系 成了 star +++ rep 清除 pub 新建mvc項目之後,首先引用Quartz組件。工具-->NuGet包管理器-->管理解決方案的 NuGet包管理器 組件安裝完成。 Quartz.Net一個最簡單任務至少包括三部分實現:

Java架構-Spring4+Springmvc+quartz實現多執行緒動態定時排程

scheduler定時排程系統是大多行業專案都需要的,傳統的spring-job模式,個人感覺已經out了,因為存在很多的問題,特別是定時排程的追加、修改、刪除等,需要修改xml,xml的配置生效無非是熱部署灰度釋出方案或者直接停止、重啟伺服器,完全不能做到自動啟動、修復方式。 提醒