Beispiel #1
0
        public TaskQueueData GetTask()
        {
            TaskQueueData oData   = null;
            bool          bResult = false;

            uint ncq_id = 0;

            string strSelectSQL = GetSelectString();
            string strUpdateSQL = GetUpdateString();

            try
            {
                using (System.Data.IDbConnection dbConnection = GetDbConnection())
                {
                    dbConnection.Open();
                    bool bIsExist = false;
                    using (IDbCommand oSelectCommand = dbConnection.CreateCommand())
                    {
                        oSelectCommand.CommandText = strSelectSQL;
                        using (System.Data.IDataReader oDataReader = oSelectCommand.ExecuteReader())
                        {
                            if (true == oDataReader.Read())
                            {
                                ncq_id           = Convert.ToUInt32(oDataReader["cq_id"]);
                                oData            = TaskQueueData.DeserializeFromXml(Convert.ToString(oDataReader["cq_data"]));
                                oData.m_oDataKey = ncq_id;

                                bIsExist = true;
                            }
                        }
                    }

                    if (bIsExist)
                    {
                        using (System.Data.IDbCommand oUpdateCommand = dbConnection.CreateCommand())
                        {
                            oUpdateCommand.CommandText = strUpdateSQL + ncq_id + "';";

                            if (oUpdateCommand.ExecuteNonQuery() > 0)
                            {
                                bResult = true;
                            }
                            else
                            {
                                bResult = false;
                            }
                        }
                    }
                }
            }
            catch
            {
            }

            return((bResult) ? oData : null);
        }
        private void GetTaskCallback(IAsyncResult ar)
        {
            try
            {
                uint     ncq_id          = 0;
                DateTime oTaskUpdateTime = DateTime.UtcNow;
                bool     bIsExist        = false;
                using (IDataReader oReader = m_GetTask.m_delegateReader.EndInvoke(ar))
                {
                    if (true == oReader.Read())
                    {
                        ncq_id          = Convert.ToUInt32(oReader["cq_id"]);
                        oTaskUpdateTime = Convert.ToDateTime(oReader["cq_update_time"]);

                        m_GetTask.m_oTaskQueueData            = TaskQueueData.DeserializeFromXml(Convert.ToString(oReader["cq_data"]));
                        m_GetTask.m_oTaskQueueData.m_oDataKey = ncq_id;

                        bIsExist = true;
                    }
                }
                if (null != m_GetTask.m_oCommand)
                {
                    m_GetTask.m_oCommand.Dispose();
                    m_GetTask.m_oCommand = null;
                }
                m_GetTask.Close();
                if (bIsExist)
                {
                    IDbCommand oUpdateCommand = m_GetTask.m_oSqlCon.CreateCommand();
                    oUpdateCommand.CommandText   = GetUpdateString(ncq_id, oTaskUpdateTime);
                    m_GetTask.m_oCommand         = oUpdateCommand;
                    m_GetTask.m_delegateNonQuery = new ExecuteNonQuery(oUpdateCommand.ExecuteNonQuery);
                    m_GetTask.m_delegateNonQuery.BeginInvoke(m_GetTask.m_fCallback, m_GetTask.m_oParam);
                }
                else
                {
                    m_GetTask.m_delegateNonQuery = null;
                    m_GetTask.FireCallback();
                }
            }
            catch (Exception e)
            {
                _log.Error("Exception cathed in GetTaskCallback:", e);
                m_GetTask.DisposeAndCallback();
            }
        }
        public TaskQueueData GetTask()
        {
            TaskQueueData oData = null;

            try
            {
                using (System.Data.IDbConnection dbConnection = GetDbConnection())
                {
                    dbConnection.Open();
                    using (IDbCommand oSelectCommand = dbConnection.CreateCommand())
                    {
                        oSelectCommand.CommandText = GetSelectString();
                        using (System.Data.IDataReader oDataReader = oSelectCommand.ExecuteReader())
                        {
                            while (true == oDataReader.Read())
                            {
                                uint ncq_id = Convert.ToUInt32(oDataReader["cq_id"]);

                                DateTime oTaskCreateTime = Convert.ToDateTime(oDataReader["cq_create_time"]);

                                if (DateTime.UtcNow < (oTaskCreateTime + m_oRetentionPeriod))
                                {
                                    DateTime oTaskUpdateTime = Convert.ToDateTime(oDataReader["cq_update_time"]);

                                    if (TryUpdateTask(ncq_id, oTaskUpdateTime))
                                    {
                                        oData            = TaskQueueData.DeserializeFromXml(Convert.ToString(oDataReader["cq_data"]));
                                        oData.m_oDataKey = ncq_id;
                                        break;
                                    }
                                }
                                else
                                {
                                    RemoveTask(ncq_id);
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }

            return(oData);
        }
        private TaskQueueData GetTask(Priority oPriority)
        {
            string strUrlQueue = GetQueueUrl(oPriority);

            TaskQueueData oData = null;

            try
            {
                using (AmazonSQS oSQSClient = AWSClientFactory.CreateAmazonSQSClient())
                {
                    ReceiveMessageRequest oReceiveMessageRequest = new ReceiveMessageRequest();
                    oReceiveMessageRequest.QueueUrl            = strUrlQueue;
                    oReceiveMessageRequest.MaxNumberOfMessages = 1;

                    ReceiveMessageResponse oReceiveMessageResponse = oSQSClient.ReceiveMessage(oReceiveMessageRequest);
                    if (oReceiveMessageResponse.IsSetReceiveMessageResult())
                    {
                        ReceiveMessageResult oReceiveMessageResult = oReceiveMessageResponse.ReceiveMessageResult;
                        foreach (Message oMessage in oReceiveMessageResult.Message)
                        {
                            oData = TaskQueueData.DeserializeFromXml(oMessage.Body);

                            SQSDataKey oSQSDataKey = new SQSDataKey();
                            oSQSDataKey.m_oPriority        = oPriority;
                            oSQSDataKey.m_strReceiptHandle = oMessage.ReceiptHandle;
                            oData.m_oDataKey = oSQSDataKey;
                            break;
                        }
                    }
                }
            }
            catch (AmazonSQSException)
            {
            }
            catch
            {
            }

            return(oData);
        }