public static IServiceCollection AddMNS(this IServiceCollection services, Action <MNSOptions> configure) { MNSOptions mnsOptions = new MNSOptions(); configure(mnsOptions); if (string.IsNullOrEmpty(mnsOptions.AccessKeyId)) { throw new ArgumentNullException(nameof(mnsOptions.AccessKeyId)); } if (string.IsNullOrEmpty(mnsOptions.SecretAccessKey)) { throw new ArgumentNullException(nameof(mnsOptions.SecretAccessKey)); } if (string.IsNullOrEmpty(mnsOptions.Endpoint)) { throw new ArgumentNullException(nameof(mnsOptions.Endpoint)); } string regex = @"^http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?$"; if (!Regex.IsMatch(mnsOptions.Endpoint, regex)) { throw new ArgumentException($"Invalid endpoint address '{mnsOptions.Endpoint}'", nameof(mnsOptions.Endpoint)); } IMNS client = new MNSClient(mnsOptions.AccessKeyId, mnsOptions.SecretAccessKey, mnsOptions.Endpoint); services.AddSingleton <IMNS>(client); return(services); }
private static void ReceiveMessage() { var mqClient = new MNSClient(AliConfig.Endpoint, AliConfig.AccessKey, AliConfig.AccessKeySecret); while (true) { try { MNSQueue queue = mqClient.GetQueue("toll-open"); MessageReceiveResponse message = queue.PopMessage(); if (!string.IsNullOrWhiteSpace(message.Code)) //有错误 { Console.WriteLine(message.Message); continue; } Console.WriteLine("收到消息Receive mesaage : {0}", message.MessageBody); queue.DeleteMessage(message.ReceiptHandle); } catch (Exception ex) { Console.WriteLine(ex.Message); Thread.Sleep(3000); } } }
public void SetAccountAttributesTest() { var config = Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigModel>(File.ReadAllText(@"E:\MNS.json")); _accessKeyId = config.AccessKeyId; _secretAccessKey = config.AccessKey; _endpoint = config.EndPoint; IMNS client = new MNSClient(_accessKeyId, _secretAccessKey, _endpoint); var resp = client.GetAccountAttributes(); var originalLoggingBucket = resp.Attributes.LoggingBucket; AccountAttributes aa1 = new AccountAttributes(); client.SetAccountAttributes(aa1); resp = client.GetAccountAttributes(); Assert.AreEqual(originalLoggingBucket, resp.Attributes.LoggingBucket); AccountAttributes aa2 = new AccountAttributes() { LoggingBucket = "Test" }; client.SetAccountAttributes(aa2); resp = client.GetAccountAttributes(); Assert.AreEqual("Test", resp.Attributes.LoggingBucket); AccountAttributes aa3 = new AccountAttributes(); client.SetAccountAttributes(aa3); resp = client.GetAccountAttributes(); Assert.AreEqual("Test", resp.Attributes.LoggingBucket); AccountAttributes aa4 = new AccountAttributes() { LoggingBucket = "Test" }; client.SetAccountAttributes(aa4); resp = client.GetAccountAttributes(); Assert.AreEqual("Test", resp.Attributes.LoggingBucket); AccountAttributes aa5 = new AccountAttributes() { LoggingBucket = "" }; client.SetAccountAttributes(aa5); resp = client.GetAccountAttributes(); Assert.AreEqual("", resp.Attributes.LoggingBucket); }
public static bool SendCode(string to, string code, string sign) { var client = new MNSClient(_accessKeyId, _secretAccessKey, _endpoint); var topic = client.GetNativeTopic("sms.topic-cn-hangzhou"); /** * Step 3. 生成SMS消息属性 */ var messageAttributes = new MessageAttributes(); var batchSmsAttributes = new BatchSmsAttributes(); // 3.1 设置发送短信的签名:SMSSignName batchSmsAttributes.FreeSignName = sign; // 3.2 设置发送短信的模板SMSTemplateCode batchSmsAttributes.TemplateCode = "SMS_63315079"; Dictionary <string, string> param = new Dictionary <string, string>(); // 3.3 (如果短信模板中定义了参数)设置短信模板中的参数,发送短信时,会进行替换 param.Add("code", code); // 3.4 设置短信接收者手机号码 batchSmsAttributes.AddReceiver(to, param); messageAttributes.BatchSmsAttributes = batchSmsAttributes; var req = new PublishMessageRequest(); req.MessageAttributes = messageAttributes; /** * Step 4. 设置SMS消息体(必须) * 注:目前暂时不支持消息内容为空,需要指定消息内容,不为空即可。 */ req.MessageBody = "smsmessage"; try { /** * Step 5. 发布SMS消息 */ PublishMessageResponse resp = topic.PublishMessage(req); Console.WriteLine(resp.MessageId); return(true); } catch (Exception ex) { return(false); } }
static void Main(string[] args) { var config = Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigModel>(File.ReadAllText(@"E:\MNS.json")); IMNS client = new MNSClient(config.AccessKeyId, config.AccessKey, config.EndPoint, null); //var index = 1; //while (index<=100) //{ // var queue=client.CreateQueueAsync("testQueue").Result; // queue.SendMessageAsync($"Hello Message").Wait(); // client.DeleteQueueAsync("testQueue").Wait(); // index++; //} //client.CreateQueueAsync("testQueue").ContinueWith( async task=> //{ // await task.Result.SendMessageAsync($"Hello Message"); // //Stopwatch stopWatch = new Stopwatch(); // //int index = 1; // //stopWatch.Start(); // //while (index<=10) // //{ // // task.Result.SendMessageAsync($"Hello Message {index}"); // // index++; // //} // //stopWatch.Stop(); // //TimeSpan ts = stopWatch.Elapsed; // //string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", // // ts.Hours, ts.Minutes, ts.Seconds, // // ts.Milliseconds / 10); // //Console.WriteLine("RunTime " + elapsedTime); // //Console.WriteLine("跑完消息"); // await client.DeleteQueueAsync("testQueue"); // await client.CreateQueueAsync("testQueue"); //}); Console.WriteLine("结束"); Console.ReadKey(); }
private static void SendMessage() { for (int i = 0; i < 20; i++) { try { var mqClient = new MNSClient(AliConfig.Endpoint, AliConfig.AccessKey, AliConfig.AccessKeySecret); MNSQueue queue = mqClient.GetQueue("toll-open"); string message = string.Format("Hello World! <from {0}, No.{1}>", Thread.CurrentThread.ManagedThreadId, i); var result = queue.SendMessage(message); Console.WriteLine("Send message : {0},return code {1}", message, result.Code); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
private static void Main(string[] args) { AliConfig.AccessKey = args[0]; AliConfig.AccessKeySecret = args[1]; AliConfig.Endpoint = args[2]; MNSQueue mqsQueue = new MNSClient(AliConfig.Endpoint, AliConfig.AccessKey, AliConfig.AccessKeySecret).GetQueue("toll-open"); mqsQueue.CreateQueue(pollingWaitSeconds: 10); Start(); var input = string.Empty; while (input != "quit") { if (input == "send") { Start(); } input = Console.ReadLine(); } }
static void Main(string[] args) { var config = Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigModel>(File.ReadAllText(@"E:\MNS.json")); _accessKeyId = config.AccessKeyId; _secretAccessKey = config.AccessKey; _endpoint = config.EndPoint; #region Topic Releated Test Cases IMNS client = new MNSClient(_accessKeyId, _secretAccessKey, _endpoint); /* 1.1. Create queue */ var createTopicRequest = new CreateTopicRequest { TopicName = _topicName }; Topic topic = null; try { client.DeleteTopic(_topicName); topic = client.CreateTopic(createTopicRequest); Console.WriteLine("Create topic successfully, topic name: {0}", topic.TopicName); } catch (Exception ex) { Console.WriteLine("Create topic failed, exception info: " + ex.Message); return; } topic = client.GetNativeTopic(_topicName); try { ListTopicResponse res = client.ListTopic(null, null, 10); Console.WriteLine("List topic successfully, topic name: {0}", _topicName); foreach (String topicUrl in res.TopicUrls) { Console.WriteLine(topicUrl); } if (res.NextMarker != null) { Console.WriteLine("NextMarker: " + res.NextMarker); } } catch (Exception ex) { Console.WriteLine("Delete topic failed, exception info: " + ex.Message); } try { GetTopicAttributesResponse res = topic.GetAttributes(); Console.WriteLine("GetTopicAttributes, topic name: {0}", _topicName); Console.WriteLine(res.Attributes.CreateTime); Console.WriteLine(res.Attributes.LastModifyTime); Console.WriteLine(res.Attributes.MaximumMessageSize); Console.WriteLine(res.Attributes.MessageRetentionPeriod); Console.WriteLine(res.Attributes.LoggingEnabled); } catch (Exception ex) { Console.WriteLine("GetTopicAttributes failed, exception info: " + ex.Message); } try { TopicAttributes attributes = new TopicAttributes() { MaximumMessageSize = 2048 }; topic.SetAttributes(attributes); Console.WriteLine("SetTopicAttributes succeed, topic name: {0}", _topicName); } catch (Exception ex) { Console.WriteLine("SetTopicAttributes failed, exception info: " + ex.Message + ex.GetType().Name); } try { SubscribeResponse res = topic.Subscribe(_subscriptionName, "http://XXXX"); Console.WriteLine("Subscribe, subscriptionUrl: {0}", res.SubscriptionUrl); } catch (Exception ex) { Console.WriteLine("Subscribe failed, exception info: " + ex.Message); } try { GetSubscriptionAttributeResponse res = topic.GetSubscriptionAttribute(_subscriptionName); Console.WriteLine("GetSubscriptionAttributeResponse, subs name: {0}", _subscriptionName); Console.WriteLine(res.Attributes.CreateTime); Console.WriteLine(res.Attributes.LastModifyTime); Console.WriteLine(res.Attributes.TopicName); Console.WriteLine(res.Attributes.TopicOwner); Console.WriteLine(res.Attributes.EndPoint); Console.WriteLine(res.Attributes.Strategy); } catch (Exception ex) { Console.WriteLine("GetSubscriptionAttribute failed, exception info: " + ex.Message); } try { SubscriptionAttributes attributes = new SubscriptionAttributes() { Strategy = SubscriptionAttributes.NotifyStrategy.EXPONENTIAL_DECAY_RETRY }; topic.SetSubscriptionAttribute(_subscriptionName, attributes); Console.WriteLine("SetSubscriptionAttribute succeed, topic name: {0}", _topicName); } catch (Exception ex) { Console.WriteLine("SetSubscriptionAttribute failed, exception info: " + ex.Message + ex.GetType().Name); } try { GetSubscriptionAttributeResponse res = topic.GetSubscriptionAttribute(_subscriptionName); Console.WriteLine("GetSubscriptionAttributeResponse, subs name: {0}", _subscriptionName); Console.WriteLine(res.Attributes.CreateTime); Console.WriteLine(res.Attributes.LastModifyTime); Console.WriteLine(res.Attributes.TopicName); Console.WriteLine(res.Attributes.TopicOwner); Console.WriteLine(res.Attributes.EndPoint); Console.WriteLine(res.Attributes.Strategy); Console.WriteLine(res.Attributes.ContentFormat); } catch (Exception ex) { Console.WriteLine("GetSubscriptionAttribute failed, exception info: " + ex.Message); } try { ListSubscriptionResponse res = topic.ListSubscription(""); Console.WriteLine("ListSubscription successfully, topic name: {0}", _topicName); foreach (String subscriptionUrl in res.SubscriptionUrls) { Console.WriteLine(subscriptionUrl); } if (res.NextMarker != null) { Console.WriteLine("NextMarker: " + res.NextMarker); } } catch (Exception ex) { Console.WriteLine("ListSubscription failed, exception info: " + ex.Message); } try { var response = topic.PublishMessage("message here </asdas\">"); Console.WriteLine("PublishMessage succeed! " + response.MessageId); } catch (Exception ex) { Console.WriteLine("PublishMessage failed, exception info: " + ex.Message); Console.WriteLine(ex.StackTrace); } try { topic.Unsubscribe(_subscriptionName); Console.WriteLine("Unsubscribe succeed!"); } catch (Exception ex) { Console.WriteLine("Subscribe failed, exception info: " + ex.Message); Console.WriteLine(ex.StackTrace); } //// PUBLISH MESSAGE for SMS //try //{ // var res = topic.Subscribe(_subscriptionName + "batchsms", topic.GenerateBatchSmsEndpoint()); // Console.WriteLine(res.SubscriptionUrl); // PublishMessageRequest request = new PublishMessageRequest(); // MessageAttributes messageAttributes = new MessageAttributes(); // BatchSmsAttributes batchSmsAttributes = new BatchSmsAttributes(); // batchSmsAttributes.FreeSignName = "陈舟锋"; // batchSmsAttributes.TemplateCode = "SMS_15535414"; // Dictionary<string, string> param = new Dictionary<string, string>(); // param.Add("name", "CSharpBatch"); // batchSmsAttributes.AddReceiver("13735576932", param); // messageAttributes.BatchSmsAttributes = batchSmsAttributes; // request.MessageAttributes = messageAttributes; // request.MessageBody = "</asdas\">"; // PublishMessageResponse resp = topic.PublishMessage(request); // Console.WriteLine(resp.MessageId); // // check sms // System.Threading.Thread.Sleep(3000); //} //catch (Exception ex) //{ // Console.WriteLine("Subscribe failed, exception info: " + ex.Message); //} //// PUBLISH MESSAGE for SMS //try //{ // var res = topic.Subscribe(_subscriptionName + "singlesms", topic.GenerateSmsEndpoint()); // Console.WriteLine(res.SubscriptionUrl); // PublishMessageRequest request = new PublishMessageRequest(); // MessageAttributes messageAttributes = new MessageAttributes(); // SmsAttributes smsAttributes = new SmsAttributes(); // smsAttributes.FreeSignName = "陈舟锋"; // smsAttributes.TemplateCode = "SMS_15535414"; // Dictionary<string, string> param = new Dictionary<string, string>(); // param.Add("name", "CSharpSingle"); // smsAttributes.Receiver = "13735576932"; // smsAttributes.SmsParams = param; // messageAttributes.SmsAttributes = smsAttributes; // request.MessageAttributes = messageAttributes; // request.MessageBody = "</asdas\">"; // PublishMessageResponse resp = topic.PublishMessage(request); // Console.WriteLine(resp.MessageId); // // check sms // System.Threading.Thread.Sleep(3000); //} //catch (Exception ex) //{ // Console.WriteLine("Subscribe failed, exception info: " + ex.Message); //} //// PUBLISH MESSAGE TO QUEUE AND MAIL //string queueName = "TestQueueNameHere"; //try //{ // var queue = client.CreateQueue(queueName); // var res = topic.Subscribe(_subscriptionName, topic.GenerateMailEndpoint("*****@*****.**")); // // res = topic.Subscribe(_subscriptionName + "2", topic.GenerateQueueEndpoint(queueName)); // res = topic.Subscribe(new SubscribeRequest(_subscriptionName + "2", topic.GenerateQueueEndpoint(queueName), "TAG", SubscriptionAttributes.NotifyStrategy.BACKOFF_RETRY, SubscriptionAttributes.NotifyContentFormat.JSON)); // PublishMessageRequest request = new PublishMessageRequest(); // MessageAttributes messageAttributes = new MessageAttributes(); // MailAttributes mailAttributes = new MailAttributes(); // mailAttributes.AccountName = "*****@*****.**"; // mailAttributes.Subject = "TestMail C#"; // mailAttributes.IsHtml = false; // mailAttributes.ReplyToAddress = false; // mailAttributes.AddressType = 0; // messageAttributes.MailAttributes = mailAttributes; // request.MessageAttributes = messageAttributes; // request.MessageTag = "TAG"; // request.MessageBody = "message here2222 </asdas\">"; // topic.PublishMessage(request); // var resp = queue.ReceiveMessage(30); // Console.WriteLine(resp.Message.Body); // // check mailbox // System.Threading.Thread.Sleep(3000); //} //catch (Exception ex) //{ // Console.WriteLine("Subscribe failed, exception info: " + ex.Message); //} //try //{ // client.DeleteQueue(queueName); //} //catch (Exception ex) //{ // Console.WriteLine("Delete queue failed, exception info: " + ex.Message); //} try { client.DeleteTopic(_topicName); Console.WriteLine("Delete topic successfully, topic name: {0}", _topicName); } catch (Exception ex) { Console.WriteLine("Delete topic failed, exception info: " + ex.Message); } #endregion Console.ReadKey(); }
/// 处理消息 public void Handle() { while (true) { try { QueryTokenForMnsQueueResponse.MessageTokenDTO_ token = null; Queue queue = null; lock (o) { if (tokenMap.ContainsKey(MessageType)) { token = tokenMap[MessageType]; } if (queueMap.ContainsKey(QueueName)) { queue = queueMap[QueueName]; } TimeSpan ts = new TimeSpan(0); if (token != null) { DateTime b = Convert.ToDateTime(token.ExpireTime); DateTime c = Convert.ToDateTime(DateTime.Now); ts = b - c; } if (token == null || ts.TotalSeconds < bufferTime || queue == null) { token = GetTokenByMessageType(AcsClient, MessageType); IMNS client = new MNSClient(token.AccessKeyId, token.AccessKeySecret, mnsAccountEndpoint, token.SecurityToken); queue = client.GetNativeQueue(QueueName); if (tokenMap.ContainsKey(MessageType)) { tokenMap.Remove(MessageType); } if (queueMap.ContainsKey(QueueName)) { queueMap.Remove(QueueName); } tokenMap.Add(MessageType, token); queueMap.Add(QueueName, queue); } } BatchReceiveMessageResponse batchReceiveMessageResponse = queue.BatchReceiveMessage(16); List <Message> messages = batchReceiveMessageResponse.Messages; for (int i = 0; i <= messages.Count - 1; i++) { try { byte[] outputb = Convert.FromBase64String(messages[i].Body); string orgStr = Encoding.UTF8.GetString(outputb); //Console.WriteLine(orgStr); //TODO 具体消费逻辑,待客户自己实现. if (SaveTask.WriteRecord(orgStr)) { //消费成功的前提下删除消息 queue.DeleteMessage(messages[i].ReceiptHandle); } } catch (Exception e) { Console.WriteLine("ERR: " + e.Message); } } } catch (Exception e) { Console.WriteLine("Handle exception: " + e.Message); } Thread.Sleep(sleepTime); } }
static void Main(string[] args) { var config = Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigModel>(File.ReadAllText(@"E:\MNS.json")); _accessKeyId = config.AccessKeyId; _secretAccessKey = config.AccessKey; _endpoint = config.EndPoint; #region Queue Releated Test Cases IMNS client = new MNSClient(_accessKeyId, _secretAccessKey, _endpoint, _stsToken); try { var resp = client.GetAccountAttributes(); Console.WriteLine("GetAccountAttributes success"); Console.WriteLine(resp.Attributes.LoggingBucket); } catch (Exception ex) { Console.WriteLine("GetAccountAttributes failed, exception info: " + ex.Message); } try { AccountAttributes aa = new AccountAttributes() { LoggingBucket = "Test" }; var resp = client.SetAccountAttributes(aa); Console.WriteLine("SetAccountAttributes success"); } catch (Exception ex) { Console.WriteLine("SetAccountAttributes failed, exception info: " + ex.Message); } try { var resp = client.GetAccountAttributes(); Console.WriteLine("GetAccountAttributes success"); Console.WriteLine(resp.Attributes.LoggingBucket); } catch (Exception ex) { Console.WriteLine("GetAccountAttributes failed, exception info: " + ex.Message); } /* 1.1. Create queue */ var createQueueRequest = new CreateQueueRequest { QueueName = _queueName, Attributes = { DelaySeconds = 10, VisibilityTimeout = 30, MaximumMessageSize = 40960, MessageRetentionPeriod = 345600, PollingWaitSeconds = 15 } }; try { var queue = client.CreateQueue(createQueueRequest); Console.WriteLine("Create queue successfully, queue name: {0}", queue.QueueName); } catch (Exception ex) { Console.WriteLine("Create queue failed, exception info: " + ex.Message); } /* 2.1. Get queue attributes */ try { var nativeQueue = client.GetNativeQueue(_queueName); var getQueueAttributesResponse = nativeQueue.GetAttributes(); Console.WriteLine("Get queue attributes successfully, status code: {0}", getQueueAttributesResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); Console.WriteLine("QueueName: {0}", getQueueAttributesResponse.Attributes.QueueName); Console.WriteLine("CreateTime: {0}", getQueueAttributesResponse.Attributes.CreateTime); Console.WriteLine("LastModifyTime: {0}", getQueueAttributesResponse.Attributes.LastModifyTime); Console.WriteLine("VisibilityTimeout: {0}", getQueueAttributesResponse.Attributes.VisibilityTimeout); Console.WriteLine("MaximumMessageSize: {0}", getQueueAttributesResponse.Attributes.MaximumMessageSize); Console.WriteLine("MessageRetentionPeriod: {0}", getQueueAttributesResponse.Attributes.MessageRetentionPeriod); Console.WriteLine("DelaySeconds: {0}", getQueueAttributesResponse.Attributes.DelaySeconds); Console.WriteLine("PollingWaitSeconds: {0}", getQueueAttributesResponse.Attributes.PollingWaitSeconds); Console.WriteLine("InactiveMessages: {0}", getQueueAttributesResponse.Attributes.InactiveMessages); Console.WriteLine("ActiveMessages: {0}", getQueueAttributesResponse.Attributes.ActiveMessages); Console.WriteLine("DelayMessages: {0}", getQueueAttributesResponse.Attributes.DelayMessages); Console.WriteLine("LoggingEnabled: {0}", getQueueAttributesResponse.Attributes.LoggingEnabled); Console.WriteLine("----------------------------------------------------\n"); } catch (Exception ex) { Console.WriteLine("Get queue attributes failed, exception info: " + ex.Message); } /* 3. List queue */ try { var nextMarker = string.Empty; ListQueueResponse listQueueResponse; do { var listQueueRequest = new ListQueueRequest { QueueNamePrefix = _queueNamePrefix, Marker = nextMarker, MaxReturns = 5 }; listQueueResponse = client.ListQueue(listQueueRequest); foreach (var queueUrl in listQueueResponse.QueueUrls) { Console.WriteLine(queueUrl); } Console.WriteLine("\n----------------------------------------------------\n"); if (listQueueResponse.IsSetNextMarker()) { nextMarker = listQueueResponse.NextMarker; Console.WriteLine("NextMarker: {0}", listQueueResponse.NextMarker); } } while (listQueueResponse.IsSetNextMarker()); } catch (Exception ex) { Console.WriteLine("List queue failed, exception info: " + ex.Message); } /* 4. Set queue attributes */ var setQueueAttributesRequest = new SetQueueAttributesRequest { Attributes = { DelaySeconds = 0, VisibilityTimeout = 15, MaximumMessageSize = 10240, PollingWaitSeconds = 10, MessageRetentionPeriod = 50000 } }; try { var nativeQueue = client.GetNativeQueue(_queueName); var setQueueAttributesResponse = nativeQueue.SetAttributes(setQueueAttributesRequest); Console.WriteLine("Set queue attributes successfully, status code: {0}", setQueueAttributesResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Set queue attributes failed, exception info: " + ex.Message); } /* 2.2. Get queue attributes again */ try { var nativeQueue = client.GetNativeQueue(_queueName); var getQueueAttributesResponse = nativeQueue.GetAttributes(); Console.WriteLine("Get queue attributes successfully again, status code: {0}", getQueueAttributesResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); Console.WriteLine("QueueName: {0}", getQueueAttributesResponse.Attributes.QueueName); Console.WriteLine("CreateTime: {0}", getQueueAttributesResponse.Attributes.CreateTime); Console.WriteLine("LastModifyTime: {0}", getQueueAttributesResponse.Attributes.LastModifyTime); Console.WriteLine("VisibilityTimeout: {0}", getQueueAttributesResponse.Attributes.VisibilityTimeout); Console.WriteLine("MaximumMessageSize: {0}", getQueueAttributesResponse.Attributes.MaximumMessageSize); Console.WriteLine("MessageRetentionPeriod: {0}", getQueueAttributesResponse.Attributes.MessageRetentionPeriod); Console.WriteLine("DelaySeconds: {0}", getQueueAttributesResponse.Attributes.DelaySeconds); Console.WriteLine("PollingWaitSeconds: {0}", getQueueAttributesResponse.Attributes.PollingWaitSeconds); Console.WriteLine("InactiveMessages: {0}", getQueueAttributesResponse.Attributes.InactiveMessages); Console.WriteLine("ActiveMessages: {0}", getQueueAttributesResponse.Attributes.ActiveMessages); Console.WriteLine("DelayMessages: {0}", getQueueAttributesResponse.Attributes.DelayMessages); Console.WriteLine("----------------------------------------------------\n"); } catch (Exception ex) { Console.WriteLine("Get queue attributes failed again, exception info: " + ex.Message); } /* 5.1. Delete queue */ var deleteQueueRequest = new DeleteQueueRequest(_queueName); deleteQueueRequest.AddHeader("Accept", "IE6"); //Add extra request headers //deleteQueueRequest.AddParameter("param1", "value1"); //InvalidQueryString try { var deleteQueueResponse = client.DeleteQueue(deleteQueueRequest); Console.WriteLine("Delete queue successfully, status code: {0}", deleteQueueResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Delete queue failed, exception info: " + ex.Message); } /* 1.2. Create queue again */ try { var queue = client.CreateQueue(createQueueRequest); Console.WriteLine("Create queue successfully again, queue name: {0}", queue.QueueName); } catch (Exception ex) { Console.WriteLine("Create queue failed again, exception info: " + ex.Message); } #endregion #region Message Releated Test Cases /* 6. Receive message */ try { var nativeQueue = client.GetNativeQueue(_queueName); for (int i = 0; i < _receiveTimes; i++) { var receiveMessageResponse = nativeQueue.ReceiveMessage(); Console.WriteLine("Receive message successfully, status code: {0}", receiveMessageResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); Message message = receiveMessageResponse.Message; Console.WriteLine("MessageId: {0}", message.Id); Console.WriteLine("ReceiptHandle: {0}", message.ReceiptHandle); Console.WriteLine("MessageBody: {0}", message.Body); Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); Console.WriteLine("NextVisibleTime: {0}", message.NextVisibleTime); Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); Console.WriteLine("DequeueCount: {0}", message.DequeueCount); Console.WriteLine("Priority: {0}", message.Priority); Console.WriteLine("----------------------------------------------------\n"); _receiptHandle = message.ReceiptHandle; Thread.Sleep(_receiveInterval); } } catch (Exception ex) { Console.WriteLine("Receive message failed, exception info: " + ex.Message + ex.GetType().Name); } /* 7. Send message */ try { var nativeQueue = client.GetNativeQueue(_queueName); //var sendMessageResponse = nativeQueue.SendMessage("Hello world!", 10, 4); var sendMessageRequest = new SendMessageRequest("阿里云<MessageBody>计算"); sendMessageRequest.DelaySeconds = 2; var sendMessageResponse = nativeQueue.SendMessage(sendMessageRequest); Console.WriteLine("Send message successfully,{0}", sendMessageResponse.ToString()); Thread.Sleep(2000); } catch (Exception ex) { Console.WriteLine("Send message failed, exception info: " + ex.Message); } /* 8. Receive message */ try { var nativeQueue = client.GetNativeQueue(_queueName); for (int i = 0; i < _receiveTimes; i++) { var receiveMessageResponse = nativeQueue.ReceiveMessage(30); Console.WriteLine("Receive message successfully, status code: {0}", receiveMessageResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); Message message = receiveMessageResponse.Message; Console.WriteLine("MessageId: {0}", message.Id); Console.WriteLine("ReceiptHandle: {0}", message.ReceiptHandle); Console.WriteLine("MessageBody: {0}", message.Body); Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); Console.WriteLine("NextVisibleTime: {0}", message.NextVisibleTime); Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); Console.WriteLine("DequeueCount: {0}", message.DequeueCount); Console.WriteLine("Priority: {0}", message.Priority); Console.WriteLine("----------------------------------------------------\n"); _receiptHandle = message.ReceiptHandle; Thread.Sleep(_receiveInterval); } } catch (Exception ex) { Console.WriteLine("Receive message failed, exception info: " + ex.Message); } /* 9. Change message visibility */ try { var nativeQueue = client.GetNativeQueue(_queueName); var changeMessageVisibilityRequest = new ChangeMessageVisibilityRequest { ReceiptHandle = _receiptHandle, VisibilityTimeout = 5 }; var changeMessageVisibilityResponse = nativeQueue.ChangeMessageVisibility(changeMessageVisibilityRequest); Console.WriteLine("Change message visibility successfully, ReceiptHandle: {0}, NextVisibleTime: {1}", changeMessageVisibilityResponse.ReceiptHandle, changeMessageVisibilityResponse.NextVisibleTime); _receiptHandle = changeMessageVisibilityResponse.ReceiptHandle; Thread.Sleep(6000); } catch (Exception ex) { Console.WriteLine("Change message visibility failed, exception info: " + ex.Message); } /* 10. Peek message */ try { var nativeQueue = client.GetNativeQueue(_queueName); for (uint i = 0; i < _receiveTimes; i++) { var peekMessageResponse = nativeQueue.PeekMessage(); Console.WriteLine("Peek message successfully, status code: {0}", peekMessageResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); Message message = peekMessageResponse.Message; Console.WriteLine("MessageId: {0}", message.Id); Console.WriteLine("MessageBody: {0}", message.Body); Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); Console.WriteLine("DequeueCount: {0}", message.DequeueCount); Console.WriteLine("Priority: {0}", message.Priority); Console.WriteLine("----------------------------------------------------\n"); Thread.Sleep(_receiveInterval); } } catch (Exception ex) { Console.WriteLine("Peek message failed, exception info: " + ex.Message); } /* 11. Delete message */ var deletedReceiptHandle = _receiptHandle; try { var nativeQueue = client.GetNativeQueue(_queueName); var receiveMessageResponse = nativeQueue.ReceiveMessage(); _receiptHandle = receiveMessageResponse.Message.ReceiptHandle; var deleteMessageResponse = nativeQueue.DeleteMessage(_receiptHandle); Console.WriteLine("Delete message successfully, status code: {0}", deleteMessageResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Delete message failed, exception info: " + ex.Message); } #endregion #region Batch Message Related Operations /* 12. Batch Send message */ try { var nativeQueue = client.GetNativeQueue(_queueName); //var sendMessageResponse = nativeQueue.SendMessage("Hello world!", 10, 4); List <SendMessageRequest> requests = new List <SendMessageRequest>(); requests.Add(new SendMessageRequest("阿里云计算 Priority1", 0, 1)); for (int i = 0; i < batchSize; i++) { requests.Add(new SendMessageRequest("阿里云计算" + i.ToString())); } BatchSendMessageRequest batchSendRequest = new BatchSendMessageRequest() { Requests = requests }; var sendMessageResponse = nativeQueue.BatchSendMessage(batchSendRequest); Console.WriteLine("Batch send message successful! messages count {0}", sendMessageResponse.Responses.Count); } catch (Exception ex) { Console.WriteLine("Batch send message failed, exception info: " + ex.Message); if (ex is BatchSendFailException) { var errorItems = ((BatchSendFailException)ex).ErrorItems; foreach (var errorItem in errorItems) { Console.WriteLine(errorItem.ToString()); } var sentItems = ((BatchSendFailException)ex).SentMessageResponses; foreach (var sentItem in sentItems) { Console.WriteLine(sentItem.ToString()); } } } Thread.Sleep(12000); /* 13. Batch Peek message */ try { var nativeQueue = client.GetNativeQueue(_queueName); var batchPeekMessageResponse = nativeQueue.BatchPeekMessage(batchSize + 1); Console.WriteLine("Batch peek message successfully, status code: {0}, messages count {1}", batchPeekMessageResponse.HttpStatusCode, batchPeekMessageResponse.Messages.Count); /*Console.WriteLine("----------------------------------------------------"); * foreach (var message in batchPeekMessageResponse.Messages) * { * Console.WriteLine("MessageId: {0}", message.Id); * Console.WriteLine("MessageBody: {0}", message.Body); * Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); * Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); * Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); * Console.WriteLine("DequeueCount: {0}", message.DequeueCount); * Console.WriteLine("Priority: {0}", message.Priority); * Console.WriteLine("----------------------------------------------------\n"); * }*/ } catch (Exception ex) { Console.WriteLine("Batch peek message failed, exception info: " + ex.Message); } /* 14. Batch Receive message */ BatchReceiveMessageResponse batchReceiveMessageResponse = null; try { var nativeQueue = client.GetNativeQueue(_queueName); batchReceiveMessageResponse = nativeQueue.BatchReceiveMessage(batchSize + 1, 3); Console.WriteLine("Batch receive message successfully, status code: {0}, messages count {1}", batchReceiveMessageResponse.HttpStatusCode, batchReceiveMessageResponse.Messages.Count); Console.WriteLine("----------------------------------------------------"); foreach (var message in batchReceiveMessageResponse.Messages) { Console.WriteLine("MessageId: {0}", message.Id); Console.WriteLine("ReceiptHandle: {0}", message.ReceiptHandle); Console.WriteLine("MessageBody: {0}", message.Body); Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); Console.WriteLine("NextVisibleTime: {0}", message.NextVisibleTime); Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); Console.WriteLine("DequeueCount: {0}", message.DequeueCount); Console.WriteLine("Priority: {0}", message.Priority); Console.WriteLine("----------------------------------------------------\n"); _receiptHandle = message.ReceiptHandle; } } catch (Exception ex) { Console.WriteLine("Batch receive message failed, exception info: " + ex.Message); } /* 15. Batch Delete message */ if (batchReceiveMessageResponse != null && batchReceiveMessageResponse.Messages.Count > 0) { try { var nativeQueue = client.GetNativeQueue(_queueName); List <string> receiptHandles = new List <string>(); foreach (var message in batchReceiveMessageResponse.Messages) { receiptHandles.Add(message.ReceiptHandle); } receiptHandles.Add(deletedReceiptHandle); var batchDeleteMessageRequest = new BatchDeleteMessageRequest() { ReceiptHandles = receiptHandles }; var batchDeleteMessageResponse = nativeQueue.BatchDeleteMessage(batchDeleteMessageRequest); Console.WriteLine("Batch delete message successfully, status code: {0}", batchDeleteMessageResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Batch delete message failed, exception info: " + ex.Message); if (ex is BatchDeleteFailException) { var errorItems = ((BatchDeleteFailException)ex).ErrorItems; foreach (var errorItem in errorItems) { Console.WriteLine(errorItem.ToString()); } } } } #endregion #region Clean Generated Queue /* 5.2. Delete queue again */ try { var deleteQueueResponse = client.DeleteQueue(deleteQueueRequest); Console.WriteLine("Delete queue successfully again, status code: {0}", deleteQueueResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Delete queue failed again, exception info: " + ex.Message); } #endregion Console.ReadKey(); }
static void Main(string[] args) { var config = Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigModel>(File.ReadAllText(@"E:\MNS.json")); _accessKeyId = config.AccessKeyId; _secretAccessKey = config.AccessKey; _endpoint = config.EndPoint; IMNS _client = new MNSClient(_accessKeyId, _secretAccessKey, _endpoint); #region Queue Releated Test Cases /* 1.1. Async create queue */ var createQueueRequest = new CreateQueueRequest { QueueName = _queueName, Attributes = { DelaySeconds = 10, VisibilityTimeout = 30, MaximumMessageSize = 40960, MessageRetentionPeriod = 345600, PollingWaitSeconds = 15 } }; try { var queue = _client.CreateQueueAsync(createQueueRequest).Result; Console.WriteLine("Async Create queue successfully, queue name: {0}", queue.QueueName); } catch (Exception ex) { Console.WriteLine("Create queue failed, exception info: " + ex.Message); } /* 2.1 Async get queue attributes */ try { var nativeQueue = _client.GetNativeQueue(_queueName); var getQueueAttributesRequest = new GetQueueAttributesRequest(); var getQueueAttributesResponse = nativeQueue.GetAttributesAsync(getQueueAttributesRequest).Result; Console.WriteLine("Async Get queue attributes successfully, status code: {0}", getQueueAttributesResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); Console.WriteLine("QueueName: {0}", getQueueAttributesResponse.Attributes.QueueName); Console.WriteLine("CreateTime: {0}", getQueueAttributesResponse.Attributes.CreateTime); Console.WriteLine("LastModifyTime: {0}", getQueueAttributesResponse.Attributes.LastModifyTime); Console.WriteLine("VisibilityTimeout: {0}", getQueueAttributesResponse.Attributes.VisibilityTimeout); Console.WriteLine("MaximumMessageSize: {0}", getQueueAttributesResponse.Attributes.MaximumMessageSize); Console.WriteLine("MessageRetentionPeriod: {0}", getQueueAttributesResponse.Attributes.MessageRetentionPeriod); Console.WriteLine("DelaySeconds: {0}", getQueueAttributesResponse.Attributes.DelaySeconds); Console.WriteLine("PollingWaitSeconds: {0}", getQueueAttributesResponse.Attributes.PollingWaitSeconds); Console.WriteLine("InactiveMessages: {0}", getQueueAttributesResponse.Attributes.InactiveMessages); Console.WriteLine("ActiveMessages: {0}", getQueueAttributesResponse.Attributes.ActiveMessages); Console.WriteLine("DelayMessages: {0}", getQueueAttributesResponse.Attributes.DelayMessages); Console.WriteLine("----------------------------------------------------\n"); } catch (Exception ex) { Console.WriteLine("Get queue attributes failed, exception info: " + ex.Message); } /* 3. Async list queue */ try { do { var listQueueRequest = new ListQueueRequest { QueueNamePrefix = _queueNamePrefix, Marker = _nextMarker, MaxReturns = 5 }; var response = _client.ListQueueAsync(listQueueRequest).Result; foreach (var queueUrl in response.QueueUrls) { Console.WriteLine(queueUrl); } Console.WriteLine("\n----------------------------------------------------\n"); if (response.IsSetNextMarker()) { _nextMarker = response.NextMarker; Console.WriteLine("NextMarker: {0}", response.NextMarker); } else { _nextMarker = string.Empty; } } while (_nextMarker != string.Empty); } catch (Exception ex) { Console.WriteLine("List queue failed, exception info: " + ex.Message); } /* 4. Async set queue attributes */ var setQueueAttributesRequest = new SetQueueAttributesRequest { Attributes = { DelaySeconds = 0, VisibilityTimeout = 10, MaximumMessageSize = 10240, PollingWaitSeconds = 10, MessageRetentionPeriod = 50000 } }; try { var nativeQueue = _client.GetNativeQueue(_queueName);; var setQueueAttributesResponse = nativeQueue.SetAttributesAsync(setQueueAttributesRequest).Result; Console.WriteLine("Async Set queue attributes successfully, status code: {0}", setQueueAttributesResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Set queue attributes failed, exception info: " + ex.Message); } /* 2.2 Async get queue attributes again */ try { var nativeQueue = _client.GetNativeQueue(_queueName); var getQueueAttributesRequest = new GetQueueAttributesRequest(); var getQueueAttributesResponse = nativeQueue.GetAttributesAsync(getQueueAttributesRequest).Result; Console.WriteLine("Async Get queue attributes successfully, status code: {0}", getQueueAttributesResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); Console.WriteLine("QueueName: {0}", getQueueAttributesResponse.Attributes.QueueName); Console.WriteLine("CreateTime: {0}", getQueueAttributesResponse.Attributes.CreateTime); Console.WriteLine("LastModifyTime: {0}", getQueueAttributesResponse.Attributes.LastModifyTime); Console.WriteLine("VisibilityTimeout: {0}", getQueueAttributesResponse.Attributes.VisibilityTimeout); Console.WriteLine("MaximumMessageSize: {0}", getQueueAttributesResponse.Attributes.MaximumMessageSize); Console.WriteLine("MessageRetentionPeriod: {0}", getQueueAttributesResponse.Attributes.MessageRetentionPeriod); Console.WriteLine("DelaySeconds: {0}", getQueueAttributesResponse.Attributes.DelaySeconds); Console.WriteLine("PollingWaitSeconds: {0}", getQueueAttributesResponse.Attributes.PollingWaitSeconds); Console.WriteLine("InactiveMessages: {0}", getQueueAttributesResponse.Attributes.InactiveMessages); Console.WriteLine("ActiveMessages: {0}", getQueueAttributesResponse.Attributes.ActiveMessages); Console.WriteLine("DelayMessages: {0}", getQueueAttributesResponse.Attributes.DelayMessages); Console.WriteLine("----------------------------------------------------\n"); } catch (Exception ex) { Console.WriteLine("Get queue attributes failed again, exception info: " + ex.Message); } /* 5.1. Async delete queue */ var deleteQueueRequest = new DeleteQueueRequest(_queueName); deleteQueueRequest.AddHeader("Accept", "IE6"); try { var response = _client.DeleteQueueAsync(deleteQueueRequest).Result; Console.WriteLine("Async Delete queue {0} successfully, status code: {1}", _queueName, response.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Delete queue failed, exception info: " + ex.Message); } /* 1.2. Async create queue again */ try { var queue = _client.CreateQueueAsync(createQueueRequest).Result; Console.WriteLine("Async Create queue successfully, queue name: {0}", queue.QueueName); } catch (Exception ex) { Console.WriteLine("Create queue failed again, exception info: " + ex.Message); } #endregion #region Messge Releated Test Cases /* 5. Async receive message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); for (int i = 0; i < _receiveTimes; i++) { var receiveMessageRequest = new ReceiveMessageRequest(); var response = nativeQueue.ReceiveMessageAsync(receiveMessageRequest).Result; Console.WriteLine("Async Receive message successfully, status code: {0}", response.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); var message = response.Message; Console.WriteLine("MessageId: {0}", message.Id); Console.WriteLine("ReceiptHandle: {0}", message.ReceiptHandle); Console.WriteLine("MessageBody: {0}", message.Body); Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); Console.WriteLine("NextVisibleTime: {0}", message.NextVisibleTime); Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); Console.WriteLine("DequeueCount: {0}", message.DequeueCount); Console.WriteLine("Priority: {0}", message.Priority); Console.WriteLine("----------------------------------------------------\n"); _receiptHandle = message.ReceiptHandle; Thread.Sleep(_receiveInterval); } } catch (Exception ex) { Console.WriteLine("Receive message failed, exception info: " + ex.Message); } /* 6. Async send message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); var sendMessageRequest = new SendMessageRequest("阿里云计算"); var response = nativeQueue.SendMessageAsync(sendMessageRequest).Result; Console.WriteLine("Async Send message successfully, status code: {0}, MessageBodyMD5: {1}", response.MessageId, response.MessageBodyMD5); } catch (Exception ex) { Console.WriteLine("Send message failed, exception info: " + ex.Message); } /* 7. Async receive message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); for (int i = 0; i < _receiveTimes; i++) { var receiveMessageRequest = new ReceiveMessageRequest(); var response = nativeQueue.ReceiveMessageAsync(receiveMessageRequest).Result; Console.WriteLine("Async Receive message successfully, status code: {0}", response.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); var message = response.Message; Console.WriteLine("MessageId: {0}", message.Id); Console.WriteLine("ReceiptHandle: {0}", message.ReceiptHandle); Console.WriteLine("MessageBody: {0}", message.Body); Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); Console.WriteLine("NextVisibleTime: {0}", message.NextVisibleTime); Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); Console.WriteLine("DequeueCount: {0}", message.DequeueCount); Console.WriteLine("Priority: {0}", message.Priority); Console.WriteLine("----------------------------------------------------\n"); _receiptHandle = message.ReceiptHandle; Thread.Sleep(_receiveInterval); } } catch (Exception ex) { Console.WriteLine("Receive message failed, exception info: " + ex.Message); } /* 8. Async change message visibility */ try { var nativeQueue = _client.GetNativeQueue(_queueName); var changeMessageVisibilityRequest = new ChangeMessageVisibilityRequest { ReceiptHandle = _receiptHandle, VisibilityTimeout = 5 }; var changeMessageVisibilityResponse = nativeQueue.ChangeMessageVisibilityAsync(changeMessageVisibilityRequest).Result; Console.WriteLine("Async Change message visibility successfully, ReceiptHandle: {0}, NextVisibleTime: {1}", changeMessageVisibilityResponse.ReceiptHandle, changeMessageVisibilityResponse.NextVisibleTime); _receiptHandle = changeMessageVisibilityResponse.ReceiptHandle; Thread.Sleep(6000); } catch (Exception ex) { Console.WriteLine("Change message visibility failed, exception info: " + ex.Message); } /* 9. Async peek message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); var peekMessageRequest = new PeekMessageRequest(); for (uint i = 0; i < _receiveTimes; i++) { var peekMessageResponse = nativeQueue.PeekMessageAsync(peekMessageRequest).Result; Console.WriteLine("Async Peek message successfully, status code: {0}", peekMessageResponse.HttpStatusCode); Console.WriteLine("----------------------------------------------------"); var message = peekMessageResponse.Message; Console.WriteLine("MessageId: {0}", message.Id); Console.WriteLine("MessageBody: {0}", message.Body); Console.WriteLine("MessageBodyMD5: {0}", message.BodyMD5); Console.WriteLine("EnqueueTime: {0}", message.EnqueueTime); Console.WriteLine("FirstDequeueTime: {0}", message.FirstDequeueTime); Console.WriteLine("DequeueCount: {0}", message.DequeueCount); Console.WriteLine("Priority: {0}", message.Priority); Console.WriteLine("----------------------------------------------------\n"); Thread.Sleep(_receiveInterval); } } catch (Exception ex) { Console.WriteLine("Peek message failed, exception info: " + ex.Message); } /* 10. Async delete message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); var receiveMessageResponse = nativeQueue.ReceiveMessage(); _receiptHandle = receiveMessageResponse.Message.ReceiptHandle; var deleteMessageRequest = new DeleteMessageRequest(_receiptHandle); var deleteMessageResponse = nativeQueue.DeleteMessageAsync(deleteMessageRequest).Result; Console.WriteLine("Async Delete message successfully, status code: {0}", deleteMessageResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Async BeginDeleteMessage failed, exception info: " + ex.Message); } /* 11. Async batch send message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); List <SendMessageRequest> requests = new List <SendMessageRequest>(); requests.Add(new SendMessageRequest("阿里云计算 Priority1", 0, 1)); for (int i = 0; i < _batchSize; i++) { requests.Add(new SendMessageRequest("阿里云计算" + i.ToString())); } BatchSendMessageRequest batchSendRequest = new BatchSendMessageRequest() { Requests = requests }; var response = nativeQueue.BatchSendMessageAsync(batchSendRequest).Result; Console.WriteLine("Async Batch send message successfully, messages count {0}", response.Responses.Count); } catch (Exception ex) { Console.WriteLine("BeginBatchSend message failed, exception info: " + ex.Message); } Thread.Sleep(12000); /* 12. Async batch peek message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); var batchPeekMessageRequest = new BatchPeekMessageRequest(_batchSize + 2); Console.WriteLine(batchPeekMessageRequest.BatchSize.ToString()); var batchPeekMessageResponse = nativeQueue.BatchPeekMessageAsync(batchPeekMessageRequest).Result; Console.WriteLine("Async Batch peek message successfully, status code: {0}, messages count {1}", batchPeekMessageResponse.HttpStatusCode, batchPeekMessageResponse.Messages.Count); } catch (Exception ex) { Console.WriteLine("BeginBatchPeek message failed, exception info: " + ex.Message); } /* 13. Async batch receive message */ try { var nativeQueue = _client.GetNativeQueue(_queueName); BatchReceiveMessageRequest batchReceiveMessageRequest = new BatchReceiveMessageRequest(_batchSize + 1, 3); var _batchReceiveMessageResponse = nativeQueue.BatchReceiveMessageAsync(batchReceiveMessageRequest).Result; Console.WriteLine("Async Batch receive message successfully, status code: {0}, messages count {1}", _batchReceiveMessageResponse.HttpStatusCode, _batchReceiveMessageResponse.Messages.Count); Console.WriteLine("----------------------------------------------------"); } catch (Exception ex) { Console.WriteLine("Batch receive message failed, exception info: " + ex.Message); } /* 14. Async batch delete message */ if (_batchReceiveMessageResponse != null && _batchReceiveMessageResponse.Messages.Count > 0) { try { var nativeQueue = _client.GetNativeQueue(_queueName); List <string> receiptHandles = new List <string>(); foreach (var message in _batchReceiveMessageResponse.Messages) { receiptHandles.Add(message.ReceiptHandle); } var batchDeleteMessageRequest = new BatchDeleteMessageRequest() { ReceiptHandles = receiptHandles }; var batchDeleteMessageResponse = nativeQueue.BatchDeleteMessageAsync(batchDeleteMessageRequest).Result; Console.WriteLine("Async Batch delete message successfully, status code: {0}", batchDeleteMessageResponse.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Batch delete message failed, exception info: " + ex.Message); } } #endregion #region Clean Generated Queue /* 5.2. Async delete queue again */ try { var response = _client.DeleteQueueAsync(deleteQueueRequest).Result; Console.WriteLine("Async Delete queue {0} successfully, status code: {1}", deleteQueueRequest.QueueName, response.HttpStatusCode); } catch (Exception ex) { Console.WriteLine("Delete queue failed again, exception info: " + ex.Message); } #endregion Console.ReadKey(); }