zoukankan      html  css  js  c++  java
  • quartz.net .netcore 定时任务部署到linux

    1.因为linux进程就是类似于服务

    所以topshelf 创建的部署到window比较方便

    部署到linux 直接创建.netcore workservice 项目,然后将quartz.net 按照部署就可以。

    如果不用workservice 用控制台程序的话,要阻塞主线程,因为控制台运行完成后就会关闭。

    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    using Microsoft.Extensions.Logging;
    using NLog;
    using Quartz;
    using Quartz.Impl;
    using Quartz.Spi;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace LinuxDiskServer
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                CreateHostBuilder(args).Build().Run();
            }
    
            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureServices((hostContext, services) =>
                    {
                        services.AddHostedService<QuartzNetService>();
                    });
    
    
            public class QuartzNetService : IHostedService
            {
                private readonly ILogger<QuartzNetService> _logger;
                IScheduler _scheduler = StdSchedulerFactory.GetDefaultScheduler().Result;
                public QuartzNetService(ILogger<QuartzNetService> logger)
                {
                    _logger = logger;
                }
                public async Task StartAsync(CancellationToken cancellationToken)
                {
                    try
                    {
                        await _scheduler.Start(cancellationToken);
                        _logger.LogInformation("Quartz调度服务开始");
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError("Quartz调度服务启动失败" + ex.Message);
                    }
    
                }
                public async Task StopAsync(CancellationToken cancellationToken)
                {
                    _logger.LogInformation("定时器结束工作");
                    await _scheduler.Shutdown(cancellationToken);
                }
            }
        }
    }
  • 相关阅读:
    零基础学python-2.7 列表与元组
    什么是App加壳,以及App加壳的利与弊
    Linux tar包安装Nginx
    GT背靠背onsite
    编程算法
    DELPHI动态创建窗体
    扩展名为DBF的是什么文件啊?
    异构数据库之间完全可以用SQL语句导数据
    XP局域网访问无权限、不能互相访问问题的完整解决方案
    Delphi 之 菜单组件(TMainMenu)
  • 原文地址:https://www.cnblogs.com/elsons/p/15340078.html
Copyright © 2011-2022 走看看