Improve UpdateRejected to run every hour, only update files from last 12 hours

This commit is contained in:
Jonathan Jenne
2022-07-01 13:06:06 +02:00
parent e42bc3db89
commit 41f9e552d5

View File

@@ -21,6 +21,9 @@ Public Class ThreadRunner
Private ReadOnly _jobArguments As WorkerArgs Private ReadOnly _jobArguments As WorkerArgs
Private ReadOnly _mssql As MSSQLServer Private ReadOnly _mssql As MSSQLServer
Private ReadOnly RejectedMaxDifferenceInMinutes As Integer = 60
Private RejectedLastRun As Date = Now.AddMinutes(-(RejectedMaxDifferenceInMinutes - 1))
Public Sub New(LogConfig As LogConfig, ConfigManager As ConfigManager(Of Config), Firebird As Firebird, Optional MSSQL As MSSQLServer = Nothing) Public Sub New(LogConfig As LogConfig, ConfigManager As ConfigManager(Of Config), Firebird As Firebird, Optional MSSQL As MSSQLServer = Nothing)
_logConfig = LogConfig _logConfig = LogConfig
_logger = _logConfig.GetLogger() _logger = _logConfig.GetLogger()
@@ -137,10 +140,24 @@ Public Class ThreadRunner
End If End If
End Sub End Sub
Private Sub DoWork(sender As Object, e As DoWorkEventArgs) Handles _workerThread.DoWork Private Sub MaybeUpdateRejected()
Try Try
Try Dim oTimeUnit = "HOUR"
Dim oSQL = "SELECT [EMAIL_MSGID] FROM TBEMLP_HISTORY WHERE (STATUS = 'REJECTED' OR CUST_REJECTED = 1) and DATEDIFF(DAY,CHANGED_WHEN,GETDATE()) <= 2 order by guid desc" Dim oTimeValue = 12
Dim oDifference As TimeSpan = Now - RejectedLastRun
If oDifference.TotalMinutes < RejectedMaxDifferenceInMinutes Then
Exit Sub
End If
_logger.Info("Updating rejected files in Firebird.")
Dim oSQL = $"
SELECT [EMAIL_MSGID]
FROM TBEMLP_HISTORY
WHERE (STATUS = 'REJECTED' OR CUST_REJECTED = 1)
AND DATEDIFF({oTimeUnit}, CHANGED_WHEN, GETDATE()) <= {oTimeValue}
ORDER BY GUID DESC"
Dim oDT As DataTable = _mssql.GetDatatable(oSQL) Dim oDT As DataTable = _mssql.GetDatatable(oSQL)
If Not IsNothing(oDT) Then If Not IsNothing(oDT) Then
For Each oROW As DataRow In oDT.Rows For Each oROW As DataRow In oDT.Rows
@@ -150,13 +167,20 @@ Public Class ThreadRunner
End If End If
Catch ex As Exception Catch ex As Exception
_logger.Warn("Error while Updating REJECTED State: " & ex.Message) _logger.Warn("Error while Updating REJECTED State: " & ex.Message)
Finally
RejectedLastRun = Now
End Try End Try
End Sub
Dim args As WorkerArgs = e.Argument Private Sub DoWork(sender As Object, e As DoWorkEventArgs) Handles _workerThread.DoWork
Try
MaybeUpdateRejected()
Dim oArgs As WorkerArgs = e.Argument
_logger.Debug("Background worker running..") _logger.Debug("Background worker running..")
Dim job As New ImportZUGFeRDFiles(_logConfig, _firebird, _config.Config.MSSQLEmailOutAccountID, _config.Config.PORTAL_NAME, _mssql) Dim oJob As New ImportZUGFeRDFiles(_logConfig, _firebird, _config.Config.MSSQLEmailOutAccountID, _config.Config.PORTAL_NAME, _mssql)
job.Start(args) oJob.Start(oArgs)
Catch ex As Exception Catch ex As Exception
_logger.Warn("Background worker failed!") _logger.Warn("Background worker failed!")
_logger.Error(ex) _logger.Error(ex)