From b27cabf20fb8020a54ffad8af25560486748ce15 Mon Sep 17 00:00:00 2001 From: JinmingHu Date: Wed, 18 Aug 2021 09:57:47 +0800 Subject: [PATCH] queue sample (#2758) --- .../sample/queue_getting_started.cpp | 67 ++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/sdk/storage/azure-storage-queues/sample/queue_getting_started.cpp b/sdk/storage/azure-storage-queues/sample/queue_getting_started.cpp index bb21d19ff..60b3d0d18 100644 --- a/sdk/storage/azure-storage-queues/sample/queue_getting_started.cpp +++ b/sdk/storage/azure-storage-queues/sample/queue_getting_started.cpp @@ -7,5 +7,70 @@ #include "samples_common.hpp" +using namespace Azure::Storage::Queues; +std::string QueueName = "sample-queue"; + +void ProducerFunc() +{ + auto queueClient = QueueClient::CreateFromConnectionString(GetConnectionString(), QueueName); + + for (int i = 0; i < 5; ++i) + { + std::string msg = "Message " + std::to_string(i); + queueClient.EnqueueMessage(msg); + } +} + +void ConsumerFunc() +{ + auto queueClient = QueueClient::CreateFromConnectionString(GetConnectionString(), QueueName); + + int counter = 0; + while (counter < 5) + { + auto msgResponse = queueClient.ReceiveMessages(); + if (!msgResponse.Value.Messages.empty()) + { + auto& msg = msgResponse.Value.Messages[0]; + + std::cout << msg.Body << std::endl; + ++counter; + + queueClient.DeleteMessage(msg.MessageId, msg.PopReceipt); + } + std::this_thread::sleep_for(std::chrono::seconds(1)); + } +} + +void ConsumerFunc2() +{ + auto queueClient = QueueClient::CreateFromConnectionString(GetConnectionString(), QueueName); + + int counter = 0; + while (counter < 5) + { + ReceiveMessagesOptions receiveOptions; + receiveOptions.MaxMessages = 3; + auto msgResponse = queueClient.ReceiveMessages(receiveOptions); + for (auto& msg : msgResponse.Value.Messages) + { + std::cout << msg.Body << std::endl; + ++counter; + + auto updateResponse = queueClient.UpdateMessage(msg.MessageId, msg.PopReceipt, 30); + + queueClient.DeleteMessage(msg.MessageId, updateResponse.Value.PopReceipt); + } + std::this_thread::sleep_for(std::chrono::seconds(1)); + } +} + SAMPLE(QueuesGettingStarted, QueuesGettingStarted) -void QueuesGettingStarted() {} +void QueuesGettingStarted() +{ + auto queueClient = QueueClient::CreateFromConnectionString(GetConnectionString(), QueueName); + queueClient.CreateIfNotExists(); + + ProducerFunc(); + ConsumerFunc(); +}