Beispiel #1
0
        public void BatchDeleteMessage(List <string> vtReceiptHandle)
        {
            if (vtReceiptHandle.Count == 0)
            {
                return;
            }
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.DeleteMessage);

            parameters.Add("queueName", this.QueueName);
            for (int i = 0; i < vtReceiptHandle.Count; i++)
            {
                string k = "receiptHandle." + Convert.ToString(i + 1);
                parameters.Add(k, vtReceiptHandle[i]);
            }
            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
        }
Beispiel #2
0
        public CMQMessage[] BatchReceiveMessage(int numOfMsg, int pollingWaitSeconds)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.BatchReceiveMessage);

            parameters.Add("queueName", this.QueueName);
            parameters.Add("numOfMsg", Convert.ToString(numOfMsg));
            if (pollingWaitSeconds > 0)
            {
                parameters.Add("UserpollingWaitSeconds", Convert.ToString(pollingWaitSeconds));
                parameters.Add("pollingWaitSeconds", Convert.ToString(pollingWaitSeconds));
            }
            else
            {
                parameters.Add("UserpollingWaitSeconds", Convert.ToString(30000));
            }
            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <CMQMessageCollection>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return(result.MsgInfoList ?? new CMQMessage[] { });
        }
Beispiel #3
0
        public CMQMessage ReceiveMessage(int pollingWaitSeconds)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.ReceiveMessage);

            parameters.Add("queueName", this.QueueName);
            if (pollingWaitSeconds > 0)
            {
                parameters.Add("UserpollingWaitSeconds", Convert.ToString(pollingWaitSeconds));
                parameters.Add("pollingWaitSeconds", Convert.ToString(pollingWaitSeconds));
            }
            else
            {
                parameters.Add("UserpollingWaitSeconds", Convert.ToString(30000));
            }


            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <CMQMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            if (result.Code == 10200)
            {
                return(null);
            }
            return(result);
        }
Beispiel #4
0
        public string[] BatchSendMessage(List <string> vtMsgBody, int delayTime)
        {
            if (vtMsgBody.Count == 0 || vtMsgBody.Count > 16)
            {
                throw new ClientException("Error: message size is empty or more than 16");
            }
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.BatchSendMessage);

            parameters.Add("queueName", this.QueueName);
            for (int i = 0; i < vtMsgBody.Count; i++)
            {
                string k = "msgBody." + Convert.ToString(i + 1);
                parameters.Add(k, vtMsgBody[i]);
            }
            parameters.Add("delaySeconds", Convert.ToString(delayTime));

            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <CMQBatchMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return(result.MsgList ?? new string[] { });
        }
Beispiel #5
0
        public void CreateTopic(string topicName, int maxMsgSize, int filterType = 1)
        {
            Guard.ArgumentNotNullOrEmpty(topicName, "topicName");

            var parameters = this.Meta.CreateGeneralParameters(CMQConstant.CreateTopic);

            parameters.Add("topicName", topicName);
            parameters.Add("filterType", Convert.ToString(filterType));
            if (maxMsgSize < 1 || maxMsgSize > 65536)
            {
                throw new ClientException("Invalid paramter: maxMsgSize > 65536 or maxMsgSize < 1 ");
            }

            var signature = Sign.Signature(
                parameters,
                this.Meta.Endpoint.Topic,
                this.Meta.Path,
                this.Meta.SecretKey,
                "POST",
                this.Meta.SignMethod);


            parameters.Add("Signature", signature);
            var result = string.Concat(this.Meta.Endpoint.Topic, this.Meta.Path)
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
        }
Beispiel #6
0
        public void SetTopicAttributes(int maxMsgSize)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.SetTopicAttributes);

            parameters.Add("topicName", this.topicName);
            if (maxMsgSize < 0 || maxMsgSize > 65536)
            {
                throw new ClientException("Invalid parameterseter maxMsgSize < 0 or maxMsgSize > 65536");
            }
            parameters.Add("maxMsgSize", Convert.ToString(maxMsgSize));

            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Topic,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey,
                "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return;
        }
Beispiel #7
0
        private void CreateQueue(string queueName, QueueMeta meta)
        {
            var parameters = this.Meta.CreateGeneralParameters(CMQConstant.CreateQueue);

            if (queueName == "")
            {
                throw new ClientException("Invalid parameter: queueName is empty");
            }
            else
            {
                parameters.Add("queueName", queueName);
            }

            if (meta.MaxMsgHeapNum > 0)
            {
                parameters.Add("maxMsgHeapNum", Convert.ToString(meta.MaxMsgHeapNum));
            }
            if (meta.PollingWaitSeconds > 0)
            {
                parameters.Add("pollingWaitSeconds", Convert.ToString(meta.PollingWaitSeconds));
            }
            if (meta.VisibilityTimeout > 0)
            {
                parameters.Add("visibilityTimeout", Convert.ToString(meta.VisibilityTimeout));
            }
            if (meta.MaxMsgSize > 0)
            {
                parameters.Add("maxMsgSize", Convert.ToString(meta.MaxMsgSize));
            }
            if (meta.MsgRetentionSeconds > 0)
            {
                parameters.Add("msgRetentionSeconds", Convert.ToString(meta.MsgRetentionSeconds));
            }

            var signature = Sign.Signature(parameters, this.Meta.Endpoint.Queue, this.Meta.Path, this.Meta.SecretKey, "POST", this.Meta.SignMethod);

            parameters.Add("Signature", signature);
            var result = string.Concat(this.Meta.Endpoint.Queue, this.Meta.Path)
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return;
        }
Beispiel #8
0
        public string[] BatchPublishMessage(List <string> vMsgBody, List <string> vTagList, string routingKey)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.BatchPublishMessage);

            parameters.Add("topicName", this.topicName);

            if (routingKey != null)
            {
                parameters.Add("routingKey", routingKey);
            }
            if (vMsgBody != null)
            {
                for (int i = 0; i < vMsgBody.Count; i++)
                {
                    string k = "msgBody." + Convert.ToString(i + 1);
                    parameters.Add(k, vMsgBody[i]);
                }
            }
            if (vTagList != null)
            {
                for (int i = 0; i < vTagList.Count; i++)
                {
                    string k = "msgTag" + Convert.ToString(i + 1);
                    parameters.Add(k, vTagList[i]);
                }
            }

            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Topic,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey,
                "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <CMQBatchMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return(result.MsgList ?? new string[] { });
        }
Beispiel #9
0
        public static string Signature(
            SortedDictionary <string, string> request,
            string endpoint,
            string path,
            string screct,
            string httpMethod,
            string method)
        {
            var plaintext = string.Concat(httpMethod
                                          , endpoint.TrimStart("http://".ToCharArray()).TrimStart("https://".ToCharArray())
                                          , path
                                          , "?",
                                          string.Join("&", request.OrderBy(o => o.Key, StringComparer.Ordinal).Select((ctx) =>
            {
                return($"{ctx.Key.Replace("_", ".")}={ctx.Value}");
            })));

            return(Sign.Signature(plaintext, screct, method));
        }
Beispiel #10
0
        public void SetSubscriptionAttributes(SubscriptionMeta meta)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.SetSubscriptionAttributes);

            parameters.Add("topicName", this.TopicName);
            parameters.Add("subscriptionName", this.SubscriptionName);
            if (meta.NotifyStrategy != "")
            {
                parameters.Add("notifyStrategy", meta.NotifyStrategy);
            }
            if (meta.NotifyContentFormat != "")
            {
                parameters.Add("notifyContentFormat", meta.NotifyContentFormat);
            }
            if (meta.FilterTag != null)
            {
                for (int i = 0; i < meta.FilterTag.Count; ++i)
                {
                    parameters.Add("filterTag." + Convert.ToString(i), meta.FilterTag[i]);
                }
            }
            if (meta.BindingKey != null)
            {
                for (int i = 0; i < meta.BindingKey.Count; ++i)
                {
                    parameters.Add("bindingKey." + Convert.ToString(i), meta.BindingKey[i]);
                }
            }
            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Topic,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
        }
Beispiel #11
0
        public QueueMeta GetQueueAttributes()
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.GetQueueAttributes);

            parameters.Add("queueName", this.QueueName);
            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var url    = this.GenerateRequest();
            var result = url.GetUriJsonContent <QueueMeta>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            return(result.Code.Equals(0) ? result : null);
        }
Beispiel #12
0
        public void DeleteMessage(string receiptHandle)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.DeleteMessage);

            parameters.Add("queueName", this.QueueName);
            parameters.Add("receiptHandle", receiptHandle);
            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return;
        }
Beispiel #13
0
        public void ClearFilterTags()
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.ClearSUbscriptionFIlterTags);

            parameters.Add("topicName", this.TopicName);
            parameters.Add("subscriptionName", this.SubscriptionName);

            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
        }
Beispiel #14
0
        public void SetQueueAttributes(QueueMeta meta)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.SetQueueAttributes);

            parameters.Add("queueName", this.QueueName);
            if (meta.MaxMsgHeapNum > 0)
            {
                parameters.Add("maxMsgHeapNum", Convert.ToString(meta.MaxMsgHeapNum));
            }
            if (meta.PollingWaitSeconds > 0)
            {
                parameters.Add("pollingWaitSeconds", Convert.ToString(meta.PollingWaitSeconds));
            }
            if (meta.VisibilityTimeout > 0)
            {
                parameters.Add("visibilityTimeout", Convert.ToString(meta.VisibilityTimeout));
            }
            if (meta.MaxMsgSize > 0)
            {
                parameters.Add("maxMsgSize", Convert.ToString(meta.MaxMsgSize));
            }
            if (meta.MsgRetentionSeconds > 0)
            {
                parameters.Add("msgRetentionSeconds", Convert.ToString(meta.MsgRetentionSeconds));
            }

            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <QueueMeta>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });
        }
Beispiel #15
0
        public SubscriptionMeta GetSubscriptionAttributes()
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.GetSubscriptionAttributes);

            parameters.Add("topicName", this.TopicName);
            parameters.Add("subscriptionName", this.SubscriptionName);

            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Topic,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <SubscriptionMeta>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });


            return(result.Code.Equals(0) ? result : null);
        }
Beispiel #16
0
        public int ListSubscription(int offset, int limit, string searchWord, List <string> subscriptionList)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.ListSubscriptionByTopic);

            parameters.Add("topicName", this.topicName);
            if (searchWord != "")
            {
                parameters.Add("searchWord", searchWord);
            }
            if (offset >= 0)
            {
                parameters.Add("offset", Convert.ToString(offset));
            }
            if (limit > 0)
            {
                parameters.Add("limit", Convert.ToString(limit));
            }


            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Topic,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey,
                "POST", this.ClientMeta.SignMethod);


            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <SubscriptionListCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return(result.TotalCount);
        }
Beispiel #17
0
        public string SendMessage(string msgBody, int delayTime)
        {
            var parameters = this.ClientMeta.CreateGeneralParameters(CMQConstant.SendMessage);

            parameters.Add("queueName", this.QueueName);
            parameters.Add("msgBody", msgBody);
            parameters.Add("delaySeconds", Convert.ToString(delayTime));

            var signature = Sign.Signature(
                parameters,
                this.ClientMeta.Endpoint.Queue,
                this.ClientMeta.Path,
                this.ClientMeta.SecretKey, "POST", this.ClientMeta.SignMethod);

            parameters.Add("Signature", signature);
            var result = this.GenerateRequest()
                         .GetUriJsonContent <GeneralMessageCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
            return(result.MsgId);
        }
Beispiel #18
0
        public void CreateSubscribe(
            string topicName,
            string subscriptionName,
            string queueName,
            SubscriptionMeta meta)
        {
            if (meta.FilterTag != null && meta.FilterTag.Count > 5)
            {
                throw new ClientException("Invalid parameter:Tag number > 5");
            }
            var parameters = this.Meta.CreateGeneralParameters(CMQConstant.Subscribe);

            if (topicName == "")
            {
                throw new ClientException("Invalid parameter: topicName is empty");
            }
            else
            {
                parameters.Add("topicName", topicName);
            }

            if (subscriptionName == "")
            {
                throw new ClientException("Invalid parameter: subscriptionName is empty");
            }
            else
            {
                parameters.Add("subscriptionName", subscriptionName);
            }
            if (meta.Endpoint == "")
            {
                throw new ClientException("Invalid parameter: endpoint is empty");
            }
            else
            {
                parameters.Add("endpoint", meta.Endpoint);
            }

            if (meta.Protocal == "")
            {
                throw new ClientException("Invalid parameter: protocol is empty");
            }
            else
            {
                parameters.Add("protocol", meta.Protocal);
            }

            if (meta.NotifyStrategy == "")
            {
                throw new ClientException("Invalid parameter: notifyStrategy is empty");
            }
            else
            {
                parameters.Add("notifyStrategy", meta.NotifyStrategy);
            }
            if (meta.NotifyContentFormat == "")
            {
                throw new ClientException("Invalid parameter: notifyContentFormat is empty");
            }
            else
            {
                parameters.Add("notifyContentFormat", meta.NotifyContentFormat);
            }

            if (meta.FilterTag != null)
            {
                for (int i = 0; i < meta.FilterTag.Count; ++i)
                {
                    parameters.Add("filterTag." + Convert.ToString(i), meta.FilterTag[i]);
                }
            }

            if (meta.BindingKey != null)
            {
                for (int i = 0; i < meta.BindingKey.Count; ++i)
                {
                    parameters.Add("bindingKey." + Convert.ToString(i), meta.BindingKey[i]);
                }
            }

            var signature = Sign.Signature(
                parameters,
                this.Meta.Endpoint.Topic,
                this.Meta.Path,
                this.Meta.SecretKey,
                "POST",
                this.Meta.SignMethod);

            parameters.Add("Signature", signature);
            var result = string.Concat(this.Meta.Endpoint.Topic, this.Meta.Path)
                         .GetUriJsonContent <GeneralCMQBaseMessage>((http) =>
            {
                return(http.Wrap(parameters.CreateRequestBody()));
            });

            result.IfHasErrorThrowException();
        }