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); }