122 lines
3.9 KiB
C#
122 lines
3.9 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Concurrent;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Runtime.InteropServices;
|
|||
|
|
using System.Text;
|
|||
|
|
using BLWWS_BLL.Job;
|
|||
|
|
using NLog;
|
|||
|
|
using Quartz;
|
|||
|
|
using Quartz.Impl;
|
|||
|
|
using LogManager = NLog.LogManager;
|
|||
|
|
|
|||
|
|
namespace BLWWS_BLL
|
|||
|
|
{
|
|||
|
|
public class GlobalCache
|
|||
|
|
{
|
|||
|
|
public static ISchedulerFactory sf = null;
|
|||
|
|
public static IScheduler sched = null;
|
|||
|
|
|
|||
|
|
public static ConcurrentQueue<string> GlobalCacheData = new ConcurrentQueue<string>();
|
|||
|
|
|
|||
|
|
public static System.Timers.Timer timer;
|
|||
|
|
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
|
|||
|
|
public static void Init()
|
|||
|
|
{
|
|||
|
|
_logger.Error("初始化");
|
|||
|
|
if (timer == null)
|
|||
|
|
{
|
|||
|
|
timer = new System.Timers.Timer();
|
|||
|
|
timer.Interval = 500;
|
|||
|
|
timer.Elapsed -= Timer_Elapsed;
|
|||
|
|
timer.Elapsed += Timer_Elapsed;
|
|||
|
|
timer.Start();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (GlobalCache.GlobalCacheData.TryDequeue(out string data))
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(data))
|
|||
|
|
{
|
|||
|
|
string strResult = Tools.PostWebRequest(data, "");//调用人脸机接口
|
|||
|
|
_logger.Error("人脸 后台:" + strResult);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception ex)
|
|||
|
|
{
|
|||
|
|
_logger.Error("人脸 后台异常:" + ex.Message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public static void Add(string jobData)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if (timer == null)
|
|||
|
|
{
|
|||
|
|
timer = new System.Timers.Timer();
|
|||
|
|
timer.Interval = 500;
|
|||
|
|
timer.Elapsed -= Timer_Elapsed;
|
|||
|
|
timer.Elapsed += Timer_Elapsed;
|
|||
|
|
timer.Start();
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
_logger.Error("后台来了任务");
|
|||
|
|
GlobalCacheData.Enqueue(jobData);
|
|||
|
|
//if (sf == null)
|
|||
|
|
//{
|
|||
|
|
// Init();
|
|||
|
|
//}
|
|||
|
|
//DateTimeOffset runTime = DateTimeOffset.UtcNow.AddSeconds(2);
|
|||
|
|
|
|||
|
|
//string JobName = "Job" + System.Guid.NewGuid().ToString("N");
|
|||
|
|
//string TriggerName = "Trigger" + System.Guid.NewGuid().ToString("N");
|
|||
|
|
//IJobDetail job = JobBuilder.Create<HttpJob>()
|
|||
|
|
// .WithIdentity(JobName, "group1")
|
|||
|
|
// .UsingJobData("JobData", jobData)
|
|||
|
|
// .Build();
|
|||
|
|
|
|||
|
|
//// Trigger the job to run on the next round minute
|
|||
|
|
//ITrigger trigger = TriggerBuilder.Create()
|
|||
|
|
// .WithIdentity(TriggerName, "group1")
|
|||
|
|
// .StartAt(runTime)
|
|||
|
|
// .Build();
|
|||
|
|
|
|||
|
|
//GlobalCache.sched.ScheduleJob(job, trigger);
|
|||
|
|
}
|
|||
|
|
public static void TaskAdd(string jobData)
|
|||
|
|
{
|
|||
|
|
if (sched != null)
|
|||
|
|
{
|
|||
|
|
DateTimeOffset runTime = DateTimeOffset.UtcNow.AddSeconds(2);
|
|||
|
|
|
|||
|
|
string JobName = "Job" + System.Guid.NewGuid().ToString("N");
|
|||
|
|
string TriggerName = "Trigger" + System.Guid.NewGuid().ToString("N");
|
|||
|
|
IJobDetail job = JobBuilder.Create<HttpJob>()
|
|||
|
|
.WithIdentity(JobName, "group1")
|
|||
|
|
.UsingJobData("JobData", jobData)
|
|||
|
|
.Build();
|
|||
|
|
|
|||
|
|
// Trigger the job to run on the next round minute
|
|||
|
|
ITrigger trigger = TriggerBuilder.Create()
|
|||
|
|
.WithIdentity(TriggerName, "group1")
|
|||
|
|
.StartAt(runTime)
|
|||
|
|
.Build();
|
|||
|
|
|
|||
|
|
GlobalCache.sched.ScheduleJob(job, trigger);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
LogHelper.WriteLog("初始化");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|