zoukankan      html  css  js  c++  java
  • Quartz.NET总结(四)Quartz 远程调度

    转载自:http://www.cnblogs.com/zhangweizhong/p/5552558.html

     前面篇已经介绍了Quartz.NET的配置,使用和Cron表达式表达式的写法。基本上后台的定时任务的定时执行已经完成,并能正确的按照执行计划,执行相关的job 。

      然后,如果任务需要更新,停止某个任务呢 ? 总不能上服务器去改相关job 的配置吧。 所以,Quartz.NET 也给我们提供了远程调度的方法。这次就简单介绍下Quartz.NET 远程调度的配置和方法。

      

      1. 配置Quartz.NET 远程方式执行

        计划任务的服务器上配置远程调用Quartz的出口, quartz.config 增加如下配置即可

          #export this server to remoting context
          quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz
          quartz.scheduler.exporter.port = 555
          quartz.scheduler.exporter.bindName = QuartzScheduler
          quartz.scheduler.exporter.channelType = tcp
          quartz.scheduler.exporter.channelName = httpQuartz

        几点说明:
          1. 客户端的"quartz.scheduler.proxy.address" 配置的地址由服务器上配置的channelType,port和 bindName 等组成。注意保持一致。

          2. 服务器初始化启动时,从数据库启动相关Job 的过程这里不细说。下次介绍我自己做的任务调度平台的时候,再细说。

          3. Job 服务器上,其实就算一个服务宿主,在后台控制调度全部的job 执行计划。

      2. 管理客户端

        a) 创建一个后台管理的客户端,可以是web网站。也可以是别的。
          初始化远程服务器上的全部Scheduler

    复制代码
            private static IScheduler scheduler = null;
            public static void InitRemoteScheduler()
            {
                try
                {
                    NameValueCollection properties = new NameValueCollection();
                    properties["quartz.scheduler.instanceName"] = "schedMaintenanceService";
                    properties["quartz.scheduler.proxy"] = "true";
                    properties["quartz.scheduler.proxy.address"] = string.Format("{0}://{1}:{2}/QuartzScheduler", scheme, server, port);
                    ISchedulerFactory sf = new StdSchedulerFactory(properties);
    
                    scheduler = sf.GetScheduler();
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog("初始化远程任务管理器失败" + ex.StackTrace);
                }
            }        
    复制代码

        b) 增加,暂停,删除任务等操作

    复制代码
            /// <summary>
            /// 暂停任务
            /// </summary>
            /// <param name="JobKey"></param>
            public static void PauseJob(string JobKey)
            {
                try
                {
                    JobKey jk = new JobKey(JobKey);
                    if (scheduler.CheckExists(jk))
                    {
                        //任务已经存在则暂停任务
                        scheduler.PauseJob(jk);
                        LogHelper.WriteLog(string.Format("任务“{0}”已经暂停", JobKey));
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    复制代码

         这里,只说了暂停的,只不过其他的都差不多。

      3. 其他

        另外,Quartz.NET提供了crystal-quartz  来实现远程管理。CrystalQuartz.Example.RemoteScheduler.Server 示例。感兴趣的朋友, 可以自己手动配置看看。

  • 相关阅读:
    【LeetCode】Validate Binary Search Tree
    【LeetCode】Search in Rotated Sorted Array II(转)
    【LeetCode】Search in Rotated Sorted Array
    【LeetCode】Set Matrix Zeroes
    【LeetCode】Sqrt(x) (转载)
    【LeetCode】Integer to Roman
    贪心算法
    【LeetCode】Best Time to Buy and Sell Stock III
    【LeetCode】Best Time to Buy and Sell Stock II
    CentOS 6 上安装 pip、setuptools
  • 原文地址:https://www.cnblogs.com/zxtceq/p/7300569.html
Copyright © 2011-2022 走看看