Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        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;
            }
        }
Beispiel #4
0
        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);
            }
        }