Imports System.Collections.Specialized Imports DigitalData.Modules.Base Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging Imports EnvelopeGenerator.Common.Jobs Imports Quartz Public Class Scheduler Inherits BaseClass Private Scheduler As IScheduler Private ReadOnly ConnectionString As String Private ReadOnly LicenseKey As String Private Property _ignoredLabels As List(Of String) Private Const JobName = "CertificateDocumentJob" Public Sub New(pLogConfig As LogConfig, pConnectionString As String, pLicenseKey As String, ignoredLabels As List(Of String)) MyBase.New(pLogConfig) ConnectionString = pConnectionString LicenseKey = pLicenseKey _ignoredLabels = ignoredLabels Dim oLogProvider = New LogProvider(Logger) Logging.LogProvider.SetCurrentLogProvider(oLogProvider) End Sub Public Async Function Start(pInterval As Integer) As Task Logger.Debug("Starting Scheduler..") Dim oProperties As New NameValueCollection() Scheduler = Await SchedulerBuilder.Create(oProperties). UseDefaultThreadPool(Sub(x) x.MaxConcurrency = 5). BuildScheduler() Dim oJobKey = New JobKey(JobName) Dim oJobData = New JobDataMap() From { {Common.Constants.GDPICTURE, LicenseKey}, {Common.Constants.LOGCONFIG, LogConfig}, {Common.Constants.DATABASE, ConnectionString}, {Common.Constants.IGNORED_LABELS, _ignoredLabels} } Logger.Debug("Initialized Job [{0}]", JobName) Dim oJob As IJobDetail = JobBuilder.Create(Of FinalizeDocumentJob). UsingJobData(oJobData). WithIdentity(oJobKey). Build() Dim oTrigger As ITrigger = TriggerBuilder.Create(). ForJob(oJobKey). WithIdentity($"{JobName}-trigger"). WithSimpleSchedule(Sub(s) s. RepeatForever(). WithIntervalInMinutes(pInterval)). StartNow(). Build() Logger.Debug("Initialized Trigger") Await Scheduler.ScheduleJob(oJob, oTrigger) Logger.Debug("Job scheduled.") Await Scheduler.Start() Logger.Info("Scheduler started!") End Function Public Async Function [Stop]() As Task Logger.Info("Stopping scheduler..") Await Scheduler.Shutdown() Logger.Info("Scheduler stopped!") End Function End Class