/[projects]/dao/DaoMqPump2/DaoMqPump2/Transport.cs
ViewVC logotype

Diff of /dao/DaoMqPump2/DaoMqPump2/Transport.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2051 by torben, Fri Aug 23 20:03:47 2013 UTC revision 2062 by torben, Thu Aug 29 07:54:49 2013 UTC
# Line 7  using System.Diagnostics; Line 7  using System.Diagnostics;
7    
8  using IBM.WMQ;  using IBM.WMQ;
9  using MySql.Data.MySqlClient;  using MySql.Data.MySqlClient;
10    using System.Globalization;
11    
12  namespace DaoMqPump2  namespace DaoMqPump2
13  {  {
# Line 15  namespace DaoMqPump2 Line 16  namespace DaoMqPump2
16    
17          enum LogfileType {          enum LogfileType {
18              LogTransactions,              LogTransactions,
19              LogEvents              LogEvents,
20                LogDiscarded
21          }          }
22    
23          public static string SQL2MQ = "sql2mq";          public static string SQL2MQ = "sql2mq";
# Line 187  namespace DaoMqPump2 Line 189  namespace DaoMqPump2
189                          MySqlCommand updateCmd = new MySqlCommand(updateSql, sqlWriteConnection);                          MySqlCommand updateCmd = new MySqlCommand(updateSql, sqlWriteConnection);
190                          int numrows = updateCmd.ExecuteNonQuery();                          int numrows = updateCmd.ExecuteNonQuery();
191    
192                          translog.WriteLine(getNowString() + " " + msgString + "\n");                          translog.WriteLine(getNowString() + " " + msgString);
193    
194                          if (numrows != 1)                          if (numrows != 1)
195                          {                          {
# Line 276  namespace DaoMqPump2 Line 278  namespace DaoMqPump2
278                                  if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)                                  if (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) == 0)
279                                  {                                  {
280                                      string msgString = mqMsg.ReadString(mqMsg.MessageLength);                                      string msgString = mqMsg.ReadString(mqMsg.MessageLength);
281                                      System.Console.WriteLine(msgString);                                      //System.Console.WriteLine(msgString);
282    
283                                        if ( msgString.StartsWith("?") ) //Hvis transaktionen starter med et ? er det ikke en gyldig transaktion
284                                        {
285                                            string discarded_filename = getLogFilename(LogfileType.LogDiscarded);
286                                            using (StreamWriter discardedlog = new StreamWriter(discarded_filename, true))
287                                            {
288                                                discardedlog.WriteLine(msgString);
289                                            }
290                                            mqMgr.Commit();//fjern den afviste transaktion fra køen
291                                            statusData.discardedCounter++;
292                                            continue; //gå frem til at tage næste transaktion fra køen
293                                        }
294    
295    
296                                      string sql = "CALL " + mq2sqlInsertQuery + "( '" + MySqlHelper.EscapeString(msgString) + "' )"; //opbygger en CALL somestoredprocedure('msgString'); sql streng                                      string sql = "CALL " + mq2sqlInsertQuery + "( '" + MySqlHelper.EscapeString(msgString) + "' )"; //opbygger en CALL somestoredprocedure('msgString'); sql streng
297    
# Line 285  namespace DaoMqPump2 Line 300  namespace DaoMqPump2
300    
301                                      if (numrows == 1)                                      if (numrows == 1)
302                                      {                                      {
303                                          translog.WriteLine(getNowString() + " " + msgString + "\n");                                          translog.WriteLine(getNowString() + " " + msgString);
304                                          mqMgr.Commit();                                          mqMgr.Commit();
305                                          statusData.counter++;                                          statusData.counter++;
306                                      }                                      }
# Line 328  namespace DaoMqPump2 Line 343  namespace DaoMqPump2
343                  }                  }
344                  catch (Exception e)                  catch (Exception e)
345                  {                  {
346                        //Det vil være mest korrekt at Rollback/backout MQ Transaktionen her - for at være sikker på at Message'n fjernes fra køen
347                        try
348                        {
349                            if (mqMgr != null)
350                            {
351                                mqMgr.Backout();
352                            }
353                        }
354                        catch (Exception e2)
355                        {
356                            this.addLogEntry("Error backing out from MQ Transaction: " + e2.Message);
357                        }
358    
359                      statusData.lastrunOk = false;                      statusData.lastrunOk = false;
360    
361                      statusData.lastErrorMessage = name + ".transportMq2Sql error: " + e.GetType().FullName + " " + e.Message;                      statusData.lastErrorMessage = name + ".transportMq2Sql error: " + e.GetType().FullName + " " + e.Message;
# Line 382  namespace DaoMqPump2 Line 410  namespace DaoMqPump2
410              Hashtable connProperties = new Hashtable();              Hashtable connProperties = new Hashtable();
411              connProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);              connProperties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_CLIENT);
412              connProperties.Add(MQC.HOST_NAME_PROPERTY, controller.mqHost);              connProperties.Add(MQC.HOST_NAME_PROPERTY, controller.mqHost);
413              connProperties.Add(MQC.CHANNEL_PROPERTY, controller.mqChannel); //WARNING: Hardcoded Channel Value !!!              connProperties.Add(MQC.CHANNEL_PROPERTY, controller.mqChannel);
414              return connProperties;              return connProperties;
415          }          }
416    
# Line 394  namespace DaoMqPump2 Line 422  namespace DaoMqPump2
422              DateTime now = DateTime.Now;              DateTime now = DateTime.Now;
423              string filename = controller.logDirectory + "\\";              string filename = controller.logDirectory + "\\";
424    
425                //Find uge nr
426                DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo;
427                Calendar myCal = CultureInfo.InvariantCulture.Calendar;//System.Globalization
428                int week = myCal.GetWeekOfYear(now, dfi.CalendarWeekRule, dfi.FirstDayOfWeek);
429    
430              switch (type)              switch (type)
431              {              {
432                  case LogfileType.LogEvents:                  case LogfileType.LogEvents:
# Line 403  namespace DaoMqPump2 Line 436  namespace DaoMqPump2
436                  case LogfileType.LogTransactions:                  case LogfileType.LogTransactions:
437                      filename += "transactionlog_";                      filename += "transactionlog_";
438                      break;                      break;
439                    case LogfileType.LogDiscarded:
440                        filename += "discardedlog_";
441                        break;
442              }              }
443    
444    
445              filename += name + "_" + now.Year.ToString("D4") + now.Month.ToString("D2") + ".log";              filename += name + "_" + now.Year.ToString("D4") + "_W" + week.ToString("D2") + ".log";
446    
447              return filename;              return filename;
448          }          }

Legend:
Removed from v.2051  
changed lines
  Added in v.2062

  ViewVC Help
Powered by ViewVC 1.1.20