EDMIService: Refactor a bit, set concurrency to 1 for now

This commit is contained in:
Jonathan Jenne 2022-06-15 09:21:11 +02:00
parent f6d8a8ec77
commit ab83138f84
5 changed files with 55 additions and 51 deletions

View File

@ -194,6 +194,7 @@
<Compile Include="Methods\IDB\UpdateFile\UpdateFileMethod.vb" />
<Compile Include="Methods\IDB\UpdateFile\UpdateFileRequest.vb" />
<Compile Include="Methods\IDB\UpdateFile\UpdateFileResponse.vb" />
<Compile Include="Scheduler\LogProvider.vb" />
<Compile Include="Scheduler\Scheduler.vb" />
<Compile Include="Scheduler\DatatableJob.vb" />
<Compile Include="Scheduler\JobListener.vb" />

View File

@ -9,6 +9,8 @@ Imports Quartz
Public Class DatatableJob
Implements IJob
Private Const COMMAND_SQL_TIMEOUT = 240
Private _MSSQL As MSSQLServer

View File

@ -202,7 +202,7 @@ Public Class JobListener
_MSSQL.ExecuteNonQuery($"INSERT INTO TBAPPSERV_CRON_DETAIL_HISTORY (DETAIL_ID) VALUES ({oDetailId})")
Catch ex As Exception
_Logger.Warn("Unexpected error in JobListener: {0}", ex.Message)
_Logger.Warn("Unexpected error in SaveDataTables: {0}", ex.Message)
_Logger.Error(ex)
End Try
End Sub

View File

@ -0,0 +1,34 @@
Imports Quartz.Logging
Public Class LogProvider
Implements ILogProvider
Private ReadOnly Logger As DigitalData.Modules.Logging.Logger
Public Sub New(Logger As DigitalData.Modules.Logging.Logger)
MyBase.New()
Me.Logger = Logger
End Sub
Public Function OpenNestedContext(message As String) As IDisposable Implements ILogProvider.OpenNestedContext
Throw New NotImplementedException()
End Function
Public Function OpenMappedContext(key As String, value As Object, Optional destructure As Boolean = False) As IDisposable Implements ILogProvider.OpenMappedContext
Throw New NotImplementedException()
End Function
Private Function GetLogger(name As String) As Logger Implements ILogProvider.GetLogger
Return Function(level, func, exception, parameters)
If exception IsNot Nothing Then
Logger.Error(exception)
ElseIf level >= LogLevel.Debug AndAlso func IsNot Nothing Then
Logger.Debug(func(), parameters)
ElseIf level >= LogLevel.Info AndAlso func IsNot Nothing Then
Logger.Info(func(), parameters)
End If
Return True
End Function
End Function
End Class

View File

@ -7,28 +7,28 @@ Imports Quartz.Impl.Matchers
Imports Quartz.Logging
Public Class Scheduler
Private _Factory As StdSchedulerFactory
Private _MSSQL As MSSQLServer
Private _Scheduler As IScheduler
Private _LogConfig As LogConfig
Private _Logger As DigitalData.Modules.Logging.Logger
Private _JobListener As JobListener
Inherits BaseClass
Private _Props = New NameValueCollection From {
{"quartz.serializer.type", "binary"}
Private ReadOnly _Factory As StdSchedulerFactory
Private ReadOnly _MSSQL As MSSQLServer
Private _Scheduler As IScheduler
Private ReadOnly _JobListener As JobListener
Private ReadOnly _Props = New NameValueCollection From {
{"quartz.serializer.type", "binary"},
{"quartz.threadPool.maxConcurrency", 1}
}
Private Const JOB_GROUP As String = "DatatableJobs"
Public Sub New(LogConfig As LogConfig, MSSQL_ECM As MSSQLServer, TableStore As DataSet)
_LogConfig = LogConfig
_Logger = LogConfig.GetLogger()
MyBase.New(LogConfig)
_Factory = New StdSchedulerFactory(_Props)
_MSSQL = MSSQL_ECM
_JobListener = New JobListener(LogConfig, _MSSQL, TableStore)
Logging.LogProvider.SetCurrentLogProvider(New LogProvider(_Logger))
Logging.LogProvider.SetCurrentLogProvider(New LogProvider(Logger))
End Sub
Public Async Sub Start()
@ -46,7 +46,7 @@ Public Class Scheduler
Try
If oCronjobs IsNot Nothing Then
_Logger.Debug("Loaded {0} cron jobs", oCronjobs.Rows.Count)
Logger.Debug("Loaded {0} cron jobs", oCronjobs.Rows.Count)
For Each oRow As DataRow In oCronjobs.Rows
Dim oDefinition As String = oRow.Item("CRON_DEFINITION")
@ -60,7 +60,7 @@ Public Class Scheduler
Dim oInitJob As IJobDetail
Dim oJobData As New JobDataMap From {
{"LogConfig", _LogConfig},
{"LogConfig", LogConfig},
{"MSSQL", _MSSQL},
{"CronJobId", oGuid},
{"CronJobTitle", oTitle}
@ -96,14 +96,14 @@ Public Class Scheduler
Await _Scheduler.ScheduleJob(oInitJob, oInitTrigger)
_Logger.Debug("Scheduled a new job for Cron Job [{0}]", oTitle)
Logger.Debug("Scheduled a new job for Cron Job [{0}]", oTitle)
Next
Else
_Logger.Warn("CronJobs could not be fetched!")
Logger.Warn("CronJobs could not be fetched!")
End If
Catch ex As Exception
_Logger.Error(ex)
_Logger.Warn("Unexpected Error while setting up scheduler: " & ex.Message)
Logger.Error(ex)
Logger.Warn("Unexpected Error while setting up scheduler: " & ex.Message)
End Try
End Sub
Public Async Function GetCronJobs() As Task(Of DataTable)
@ -131,37 +131,4 @@ Public Class Scheduler
Public Async Sub [Stop]()
Await _Scheduler.Shutdown()
End Sub
Private Class LogProvider
Implements ILogProvider
Private _Logger As Modules.Logging.Logger
Public Sub New(Logger As DigitalData.Modules.Logging.Logger)
MyBase.New()
_Logger = Logger
End Sub
Public Function OpenNestedContext(message As String) As IDisposable Implements ILogProvider.OpenNestedContext
Throw New NotImplementedException()
End Function
Public Function OpenMappedContext(key As String, value As Object, Optional destructure As Boolean = False) As IDisposable Implements ILogProvider.OpenMappedContext
Throw New NotImplementedException()
End Function
Private Function GetLogger(name As String) As Logging.Logger Implements ILogProvider.GetLogger
Return Function(level, func, exception, parameters)
If exception IsNot Nothing Then
_Logger.Error(exception)
ElseIf level >= LogLevel.Debug AndAlso func IsNot Nothing Then
_Logger.Debug(func(), parameters)
ElseIf level >= LogLevel.Info AndAlso func IsNot Nothing Then
_Logger.Info(func(), parameters)
End If
Return True
End Function
End Function
End Class
End Class