Пример #1
0
        public static void WriteAudit(DataAudit.DataAudit auditLogToProcess, string title)
        {
            DataAudit.DataAudit auditLog = auditLogToProcess;
            auditLog.TimeStamp = DateTime.UtcNow;

            QueueMessage newMessage = null;

            //where should I get this?
            string dbName      = ConfigurationManager.AppSettings.Get("PhytelServicesConnName");
            string configqueue = "DATA_AUDIT_QUEUE";

            DataSet ds = Phytel.Services.SQLDataService.Instance.ExecuteSQL(dbName, false, string.Format("Select [Value] From ApplicationSetting Where [Key] = '{0}'", configqueue));

            if (ds.Tables[0].Rows.Count > 0)
            {
                string messageQueue = ds.Tables[0].Rows[0]["Value"].ToString();
                //string messageQueue = "fake";

                string xmlBody = ToXML(auditLog);

                newMessage      = new QueueMessage(ASEMessageType.Process, messageQueue);
                newMessage.Body = xmlBody;

                MessageQueueHelper.SendMessage(@messageQueue, newMessage, title);
            }
        }
Пример #2
0
        public override void Execute(QueueMessage queueMessage)
        {
            try
            {
                _DBConnName = base.Configuration.SelectSingleNode("//Phytel.ASE.Process/ProcessConfiguration/PhytelServicesConnName").InnerText;

                DataAudit.DataAudit da = MessageQueueHelper.DeserializeXmlObject(queueMessage.Body, typeof(DataAudit.DataAudit)) as DataAudit.DataAudit;

                MongoDatabase db = Phytel.Services.MongoService.Instance.GetDatabase(_DBConnName, da.Contract, true, "Audit");
                db.GetCollection(da.EntityType).Insert(da);

                XmlNodeList queues = Configuration.SelectNodes(ConfigXPathPrefix + "AdditionalQueues/Queue");
                if (queues != null)
                {
                    queueMessage.Routes.ForEach(t =>
                    {
                        t.RetryProcessInterval = GetRetryInterval();
                        t.MaxProcessRetryCount = 4;
                    });

                    foreach (XmlNode queue in queues)
                    {
                        try
                        {
                            string queueName = queue.InnerText;
                            RouteMessage(queueMessage, queueName);
                        }
                        catch (Exception ex)
                        {
                            LogError(ex, LogErrorCode.Error, LogErrorSeverity.Critical);
                            RetryMessage = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                base.LogError(ex, LogErrorCode.Error, LogErrorSeverity.Critical);
                throw;
            }
        }