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);
                }
            }
        }
    }
  • 相关阅读:
    ant中build.xml文件解释
    mysql练习题
    Mysql基本知识
    Python Socket 简单聊天室2
    Python Socket 简单聊天室1
    Python 导入模块
    Python 文件的处理
    Python yield
    Python 内置函数
    Python 生成验证码
  • 原文地址:https://www.cnblogs.com/elsons/p/15340078.html
Copyright © 2011-2022 走看看