public static void RetrieveApproximateMessageCount( SqlString accountName, SqlString sharedKey, SqlBoolean useHTTPS, SqlString queueName, SqlInt32 timeoutSeconds, SqlString xmsclientrequestId) { ITPCfSQL.Azure.AzureQueueService aqs = new AzureQueueService(accountName.Value, sharedKey.Value, useHTTPS.Value); ITPCfSQL.Azure.Queue q = aqs.GetQueue(queueName.Value); int iRet = q.RetrieveApproximateMessageCount(timeoutSeconds.Value, xmsclientrequestId.Value); Utils.PushSingleRecordResult(iRet, System.Data.SqlDbType.Int); }
public static void EnqueueMessage( SqlString accountName, SqlString sharedKey, SqlBoolean useHTTPS, SqlString queueName, SqlXml xmlMessage, SqlInt32 timeoutSeconds, SqlGuid xmsclientrequestId) { ITPCfSQL.Azure.AzureQueueService aqs = new AzureQueueService(accountName.Value, sharedKey.Value, useHTTPS.Value); ITPCfSQL.Azure.Queue q = aqs.GetQueue(queueName.Value); q.PutMessage(new Message(xmlMessage.Value), timeoutSeconds.IsNull ? 60 : timeoutSeconds.Value, xmsclientrequestId.IsNull ? (Guid?)null : xmsclientrequestId.Value); }
public static void _ListQueuesCallback(Object obj, out SqlString name, out SqlString url, out SqlXml metadata) { if (!(obj is ITPCfSQL.Azure.Queue)) { throw new ArgumentException("Expected " + typeof(ITPCfSQL.Azure.Queue).ToString() + ", received " + obj.GetType().ToString()); } ITPCfSQL.Azure.Queue q = (ITPCfSQL.Azure.Queue)obj; name = q.Name; url = q.Url.ToString(); if ((q.Metadata != null) && (q.Metadata.Count > 0)) { System.IO.MemoryStream ms = new System.IO.MemoryStream(); using (System.Xml.XmlWriter wr = System.Xml.XmlWriter.Create(ms)) { wr.WriteStartElement("MetadataList"); foreach (string s in q.Metadata.Keys) { wr.WriteStartElement(s); wr.WriteString(q.Metadata[s]); wr.WriteEndElement(); } wr.WriteEndElement(); wr.Flush(); wr.Close(); } ms.Seek(0, System.IO.SeekOrigin.Begin); metadata = new SqlXml(ms); } else { metadata = null; } }
public static void DequeueMessage( SqlString accountName, SqlString sharedKey, SqlBoolean useHTTPS, SqlString queueName, SqlInt32 visibilityTimeoutSeconds, // we won't support peek so we should do it fast SqlInt32 timeoutSeconds, SqlGuid xmsclientrequestId) { ITPCfSQL.Azure.AzureQueueService aqs = new AzureQueueService(accountName.Value, sharedKey.Value, useHTTPS.Value); ITPCfSQL.Azure.Queue q = aqs.GetQueue(queueName.Value); Message msg = q.Get(visibilityTimeoutSeconds.Value, timeoutSeconds.Value, xmsclientrequestId.IsNull ? (Guid?)null : xmsclientrequestId.Value); if (msg == null) // empty queue { return; } msg.Delete(timeoutSeconds.Value, xmsclientrequestId.IsNull ? (Guid?)null : xmsclientrequestId.Value); try // try to convert it to XML, if it fails, return a simple string { SqlXml xml; using (System.IO.StringReader sr = new System.IO.StringReader(msg.Body)) { using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(sr)) { xml = new SqlXml(reader); } } Utils.PushSingleRecordResult(xml.Value, System.Data.SqlDbType.Xml); } catch (Exception exce) { SqlContext.Pipe.Send("Cannot parse as XML:" + exce.Message); Utils.PushSingleRecordResult(msg.Body, System.Data.SqlDbType.NVarChar); } }