static void Main(string[] args) { ReadGDSQueue objGDSQScanner = null; ///////Add settings in Azure table GDSServiceConfig objServiceConfig = new GDSServiceConfig(); ///////Validate Configuration settings IRoboticsLogger objFileLogger = RoboticsLoggerFactory.GetRoboticsLogger(RoboticsLoggerEnum.FileLogger, objServiceConfig.LocalLogPath, string.Empty, string.Empty); IMsgQProvider _objCloudLoggingQ = CloudObjectFactory.GetMsgQProvider(objServiceConfig.CloudProvider, objServiceConfig.CloudLoggingQName, objServiceConfig.ConnectionString); var logServiceStartMsg = LoggingMsgComposer.GetServiceStartLogMsg(objServiceConfig.ServiceName); _objCloudLoggingQ.AddMsgToLoggingQ(logServiceStartMsg); while (true) { try { ///////read settings from Azure table and referesh the settings objGDSQScanner = new ReadGDSQueue(objServiceConfig, objFileLogger, _objCloudLoggingQ); objGDSQScanner.ScanGDSQueue(); } catch (Exception ex) { try { LogMsg logMsg = LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Error, "Parent Block: " + Constants.OUTER_CATCH_BLOCK_ERROR_MSG + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace, objServiceConfig.ServiceName, objServiceConfig.GalQNumber); _objCloudLoggingQ.AddMsgToLoggingQ(logMsg); } catch (Exception innerEx) { //LOG into local file try { objFileLogger.WriteLog(RoboticsLogLevelEnum.Error, LoggingMsgComposer.GetStringLogMsg("Parent Block: " + Constants.OUTER_CATCH_BLOCK_ERROR_MSG + Environment.NewLine + innerEx.Message + Environment.NewLine + innerEx.StackTrace, objServiceConfig.ServiceName, objServiceConfig.GalQNumber)); } catch { /* SUPPRESS EXCEPTTION TO RESTART THE FLOW AFTER DELAY */ } } } finally { objGDSQScanner = null; } Thread.Sleep(1000 * objServiceConfig.DelayInterval); } }
public void ScanGDSQueue() { int currentQKnt = 0; try { #region GET QUEUE COUNT try { currentQKnt = _gdsPro.GetQCount(_qNumber, _pcc); } catch (Exception ex) { currentQKnt = 0; LogMsg logMsg = LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Error, Constants.Q_COUNT_ERROR_MSG + Environment.NewLine + ex.Message, _serviceName, _qNumber); _objCloudLoggingQ.AddMsgToLoggingQ(logMsg); } #endregion if (currentQKnt > 0) { ReadQueuePNRMsg currentPNR = null; ReadQueuePNRMsg previousPNR = null; //READ QUEUE currentPNR = _gdsPro.ReadQueue(_qNumber, string.Empty, _msgTemplate); //TRAVERSE GAL QUEUE TO REMOVE PNR AND ADD TO AZURE Q for (int i = 0; i < currentQKnt; i++) { if (currentPNR != null && !string.IsNullOrEmpty(currentPNR.Recloc)) { currentPNR.PCC = _pcc; currentPNR.FromQueue = _qNumber; currentPNR.StartTime = DateTime.Now; previousPNR = null; previousPNR = currentPNR.DeepClone(); //_pnrMovementMsg = string.Format(_pnrMovementMsg, // REMOVE CURRENT PNR AND READ NEXT currentPNR = _gdsPro.RemoveNGetNextPNRMsg(string.Empty, _msgTemplate); if (_objDestinationCloudQ != null) { //PUSH MSG INTO AZURE QUEUE (/////IF IT FAILS THEN ADD PNR BACK TO GAL QUEUE/////) _objDestinationCloudQ.AddPNRToCloudQ(previousPNR); } //ADD MESSAGE TO LOGGING QUEUE _pnrMovementMsg = string.Format(_pnrMovementMsg, previousPNR.Recloc); LogMsg logMsg = LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Info, _pnrMovementMsg, _serviceName, _qNumber); _objCloudLoggingQ.AddMsgToLoggingQ(logMsg); } else { break; } currentQKnt = currentQKnt - 1; } try { _gdsPro.CloseSession(string.Empty); } catch { } } } catch (Exception ex) { //LOG EXECEPTION (/////// RESOLVE ISSUE OF SESSION OUT) if (_gdsPro != null) { try { _gdsPro.CloseSession(string.Empty); } catch (Exception SessionCloseEx) { } } try { LogMsg logMsg = LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Error, Constants.OUTER_CATCH_BLOCK_ERROR_MSG + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace, _serviceName, _qNumber); _objCloudLoggingQ.AddMsgToLoggingQ(logMsg); } catch (Exception innerEx) { //LOG into local file _roboticsLogger.WriteLog(RoboticsLogLevelEnum.Error, LoggingMsgComposer.GetLogMsg(RoboticsLogLevelEnum.Error, Constants.OUTER_CATCH_BLOCK_ERROR_MSG + Environment.NewLine + innerEx.Message + Environment.NewLine + innerEx.StackTrace, _serviceName, _qNumber).ToString()); } } }