--- dao/DaoMqPump2/MQFilter/FilterController.cs 2014/05/19 11:59:45 2175 +++ dao/DaoMqPump2/MQFilter/FilterController.cs 2014/05/20 20:12:15 2180 @@ -24,16 +24,22 @@ public string[] filterTranscations { get; private set; } + Logfile logFile; + public static readonly string queueNameIndbakke = "DAO.INDBAKKE"; public static readonly string queueNameDimaps = "DAO.SAMLET"; public static readonly string queueNameMysql = "DAO.ALL"; public static readonly string queueNameStore = "DAO.STORE"; + TimeSpan silentPeriodBegin; + TimeSpan silentPeriodEnd; protected FilterController() { initialize(); + logFile = new Logfile(LogfileType.LogEvents, "filter", logDirectory); + logFile.addSingleLogEntry("Starting service"); } private void initialize() @@ -80,6 +86,24 @@ //////////// + string silentBeginStr = (string)key.GetValue("SilentPeriodBegin"); + if (silentBeginStr == null || silentBeginStr.Length == 0) + { + key.SetValue("SilentPeriodBegin", "", RegistryValueKind.String); + throw new System.ArgumentException("SilentPeriodBegin cannot be null or empty"); + } + silentPeriodBegin = TimeSpan.Parse(silentBeginStr); + + string silentEndStr = (string)key.GetValue("SilentPeriodEnd"); + if (silentEndStr == null || silentEndStr.Length == 0) + { + key.SetValue("SilentPeriodEnd", "", RegistryValueKind.String); + throw new System.ArgumentException("SilentPeriodEnd cannot be null or empty"); + } + silentPeriodEnd = TimeSpan.Parse(silentEndStr); + + //////////// + String tmpFilterTransactions = (string)key.GetValue("FilterTransactions"); if (tmpFilterTransactions == null || tmpFilterTransactions.Length == 0) { @@ -101,9 +125,20 @@ - public void transportAllMessages() { + try + { + transportMessagesWorker(); + } + catch (Exception e) + { + logFile.addSingleLogEntry("Error during transportAllMessages: " + e.Message); + } + } + + private void transportMessagesWorker() + { int messageCount = 0; MQQueueManager mqMgr = null; @@ -111,6 +146,8 @@ MQQueue queueMysql = null; MQQueue queueDimaps = null; MQQueue queueStore = null; + + using (Logfile translog = new Logfile(LogfileType.LogTransactions, "filter", logDirectory)) try { //MQ options @@ -150,14 +187,17 @@ // validér at headeren er gyldig if ( Salt2Helper.validateSalt2Header(salt2String) == false) { - string discarded_filename = Logfile.getLogFilename(LogfileType.LogTransactions, logDirectory, "filter"); - using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true)) + + + using (Logfile discardedlog = new Logfile(LogfileType.LogDiscarded, "filter", logDirectory)) { - discardedlog.WriteLine(Logfile.getNowString() + " " + salt2String); + discardedlog.writeLogEntry(salt2String); } continue; //gå frem til at tage næste transaktion fra køen } + translog.writeLogEntry(salt2String); + MQPutMessageOptions pmo = new MQPutMessageOptions(); // accept the defaults, // same as MQPMO_DEFAULT @@ -177,7 +217,7 @@ queueDimaps.Put(msg, pmo); } - + messageCount++;// increment per run message counter if (messageCount >= 10000) // if we have moved 10000 messages in this run - let it go @@ -232,9 +272,9 @@ private Boolean saveForLater(Salt2Header header) { - DateTime now = DateTime.Now; - int hour = now.Hour; - if (hour >= 14 && hour < 18) + TimeSpan now = DateTime.Now.TimeOfDay; + + if (now >= silentPeriodBegin && now < silentPeriodEnd) { if (contains(header.transaktionForkortelse, this.filterTranscations) ) //Så længe vi skal være .net3.0 kompatible er LINQ problematisk (LINQ kræver 3.5)