{"id":4222,"date":"2017-01-09T00:00:00","date_gmt":"2017-01-09T00:00:00","guid":{"rendered":"https:\/\/azure.microsoft.com\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message"},"modified":"2025-06-10T06:15:38","modified_gmt":"2025-06-10T13:15:38","slug":"azure-storage-queues-new-feature-pop-receipt-on-add-message","status":"publish","type":"post","link":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/","title":{"rendered":"Azure Storage Queues New Feature: Pop-Receipt on Add Message"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">As part of the <a href=\"https:\/\/docs.microsoft.com\/en-us\/rest\/api\/storageservices\/fileservices\/versioning-for-the-azure-storage-services\">\u201c2016-05-31\u201d REST API<\/a> version, we have introduced the pop receipt on add message functionality, which has been a commonly requested feature by our users.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pop receipt functionality for the Queue service is a great tool for developers to easily identify an enqueued message for further processing. Prior to the \u201c2016-05-31\u201d version, pop receipt value could only be retrieved when a&nbsp;user gets a message from the queue. To simplify this, we now make pop receipt value available in the Put Message (aka Add Message) response which allows users to update\/delete a message without the need to retrieve the message first.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below is a short code snippet that make use of this new feature using Azure Storage Client Library 8.0 for .NET.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ create initial message\nCloudQueueMessage message = new CloudQueueMessage(\"\");\n\n\/\/ add the message to the queue, but keep it hidden for 3 min\nqueue.AddMessage(message, null, TimeSpan.FromSeconds(180));\n\/\/message.PopReceipt is now populated, and only this client can operate on the message until visibility timeout expires\n.\n.\n.\n\/\/ update the message (now no need to receive the message first, since we already have a PopReceipt for the message)\nmessage.SetMessageContent(\"\");\nqueue.UpdateMessage(message, TimeSpan.FromSeconds(180), MessageUpdateFields.Content | MessageUpdateFields.Visibility);\n\n\/\/ remove the message using the PopReceipt before any other process sees it\nawait queue.DeleteMessageAsync(message.Id, message.PopReceipt);\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">A common problem in cloud applications is to help coordinate updates across non-transactional resources. As an example, an application that processes images or videos may:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1.&nbsp;&nbsp; &nbsp;Process an image<br>2.&nbsp;&nbsp; &nbsp;Upload it to a blob<br>3.&nbsp;&nbsp; &nbsp;Save metadata in a table entity<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These steps can be tracked using the Queue service as the processes complete successfully using the following flow:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1.&nbsp;&nbsp; &nbsp;Add a state as a message to the Queue service<br>2.&nbsp;&nbsp; &nbsp;Process an image<br>3.&nbsp;&nbsp; &nbsp;Upload it to a blob<br>4.&nbsp;&nbsp; &nbsp;Save metadata in a table entity<br>5.&nbsp;&nbsp; &nbsp;Delete the message if all were successful<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Remaining messages in the queue are simply images that failed to be processed, and can be consumed by a worker for cleanup. The scenario above is now made simpler with the popreceipt on add message feature, since in the 5th step the message can be deleted with the popreceipt value retrieved in the 1st step.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-h-2-font-size\" id=\"quick-sample-using-the-face-api-from-azure-cognitive-services\">Quick Sample using the Face API from Azure Cognitive Services<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the following sample, we are going to be uploading photos from a local folder to the Blob service and we will also make use of the Face API to estimate each person\u2019s age in the photos, storing as an entity in a table. This process will be tracked in a queue and once completed, the message will be deleted with the pop receipt value. The workflow for the sample is:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1.&nbsp;&nbsp; &nbsp;Find JPG files in \u2018testfolder\u2019<br>2.&nbsp;&nbsp; &nbsp;For each photo, repeat steps 2-7:<br>3.&nbsp;&nbsp; &nbsp;Upload a queue message representing the processing of this photo. &nbsp;<br>4.&nbsp;&nbsp; &nbsp;Call the Face API to estimate the age of each person in the photo.<br>5.&nbsp;&nbsp; &nbsp;Store the age information as an entity in the table.<br>6.&nbsp;&nbsp; &nbsp;Upload the image to a blob if at least one face is detected.<br>7.&nbsp;&nbsp; &nbsp;If both the blob and the table entity operation succeeded, delete the message from queue using the pop receipt.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; quick-code: false; notranslate\" title=\"\">\n\/\/ Iterate over photos in 'testfolder'\nvar images = Directory.EnumerateFiles(\"testfolder\", \"*.jpg\");\n\nforeach (string currentFile in images)\n{\n\n    string fileName = currentFile.Replace(\"testfolder\", \"\");\n\n    Console.WriteLine(\"Processing image {0}\", fileName);\n\n    \/\/ Add a message to the queue for each photo. Note the visibility timeout\n    \/\/ as blob and table operations in the following process may take up to 180 seconds.\n    \/\/ After the 180 seconds, the message will be visible and a worker role can pick up \n    \/\/ the message from queue for cleanup. Default time to live for the message is 7 days.\n    CloudQueueMessage message = new CloudQueueMessage(fileName);\n    queue.AddMessage(message, null, TimeSpan.FromSeconds(180));\n\n    \/\/ read the file\n    using (var fileStream = File.OpenRead(currentFile))\n    {\n\n        \/\/ detect face and estimate the age\n        var faces = await faceClient.DetectAsync(fileStream, false, true, new FaceAttributeType[] { FaceAttributeType.Age });\n        Console.WriteLine(\" > \" + faces.Length + \" face(s) detected.\");\n\n        CloudBlockBlob blob = container.GetBlockBlobReference(fileName);\n\n        var tableEntity = new DynamicTableEntity(DateTime.Now.ToString(\"yyMMdd\"), fileName);\n\n        \/\/ iterate over detected faces\n        int i = 1;\n        foreach (var face in faces)\n        {\n\n            \/\/ append the age info as property in the table entity\n            tableEntity.Properties.Add(\"person\" + i.ToString(), new EntityProperty(face.FaceAttributes.Age.ToString()));\n            i++;\n\n        }\n\n        \/\/ upload the blob if a face was detected\n        if (faces.Length > 0)\n            await blob.UploadFromFileAsync(currentFile);\n\n        \/\/ store the age info in the table\n        table.Execute(TableOperation.InsertOrReplace(tableEntity));\n\n        \/\/ delete the queue message with the pop receipt since previous operations completed successfully\n        await queue.DeleteMessageAsync(message.Id, message.PopReceipt);\n\n    }\n\n}\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Check out the full sample in our <a href=\"https:\/\/github.com\/Azure-Samples\/storage-queue-dotnet-pop-receipt\">Github sample repository<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As always, if you have any feature requests please let us know by submitting your ideas to <a href=\"https:\/\/feedback.azure.com\/forums\/217298-storage\">Azure Storage Feedback<\/a>.<\/p>\n\n\n<p><br \/><br \/><\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<pre class=\"prettyprint\">\u00a0<\/pre>","protected":false},"excerpt":{"rendered":"<p>Announcing Popreceipt on Add Message functionality in Azure Storage Queues.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ms_queue_id":[],"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","_alt_title":"","footnotes":"","msx_community_cta_settings":[]},"categories":[1454,1556],"tags":[],"audience":[3057,3055,3056],"content-type":[1511],"product":[3164],"tech-community":[],"topic":[],"coauthors":[97],"class_list":["post-4222","post","type-post","status-publish","format-standard","hentry","category-ai-machine-learning","category-mobile","audience-data-professionals","audience-developers","audience-it-implementors","content-type-best-practices","product-microsoft-foundry","review-flag-1680286581-295","review-flag-1680286581-56","review-flag-1680286581-364","review-flag-1-1680286581-825","review-flag-2-1680286581-601","review-flag-3-1680286581-173","review-flag-4-1680286581-250","review-flag-5-1680286581-950","review-flag-6-1680286581-909","review-flag-7-1680286581-146","review-flag-8-1680286581-263","review-flag-alway-1680286580-106","review-flag-new-1680286579-546"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Azure Storage Queues New Feature: Pop-Receipt on Add Message | Microsoft Azure Blog<\/title>\n<meta name=\"description\" content=\"Announcing Popreceipt on Add Message functionality in Azure Storage Queues\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Storage Queues New Feature: Pop-Receipt on Add Message | Microsoft Azure Blog\" \/>\n<meta property=\"og:description\" content=\"Announcing Popreceipt on Add Message functionality in Azure Storage Queues\" \/>\n<meta property=\"og:url\" content=\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Azure Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/microsoftazure\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-09T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-10T13:15:38+00:00\" \/>\n<meta name=\"author\" content=\"Microsoft Azure\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@azure\" \/>\n<meta name=\"twitter:site\" content=\"@azure\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Azure\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/\"},\"author\":[{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/microsoft-azure\/\",\"@type\":\"Person\",\"@name\":\"Microsoft Azure\"}],\"headline\":\"Azure Storage Queues New Feature: Pop-Receipt on Add Message\",\"datePublished\":\"2017-01-09T00:00:00+00:00\",\"dateModified\":\"2025-06-10T13:15:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/\"},\"wordCount\":515,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"articleSection\":[\"AI + machine learning\",\"Mobile\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/\",\"name\":\"Azure Storage Queues New Feature: Pop-Receipt on Add Message | Microsoft Azure Blog\",\"isPartOf\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\"},\"datePublished\":\"2017-01-09T00:00:00+00:00\",\"dateModified\":\"2025-06-10T13:15:38+00:00\",\"description\":\"Announcing Popreceipt on Add Message functionality in Azure Storage Queues\",\"breadcrumb\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog home\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI + machine learning\",\"item\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/ai-machine-learning\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Azure Storage Queues New Feature: Pop-Receipt on Add Message\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#website\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"name\":\"Microsoft Azure Blog\",\"description\":\"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.\",\"publisher\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization\",\"name\":\"Microsoft Azure Blog\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"contentUrl\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp\",\"width\":512,\"height\":512,\"caption\":\"Microsoft Azure Blog\"},\"image\":{\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/microsoftazure\",\"https:\/\/x.com\/azure\",\"https:\/\/www.instagram.com\/microsoftdeveloper\/\",\"https:\/\/www.linkedin.com\/company\/16188386\",\"https:\/\/www.youtube.com\/user\/windowsazure\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117\",\"name\":\"shakir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g\",\"caption\":\"shakir\"},\"sameAs\":[\"https:\/\/azure.microsoft.com\"],\"url\":\"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Azure Storage Queues New Feature: Pop-Receipt on Add Message | Microsoft Azure Blog","description":"Announcing Popreceipt on Add Message functionality in Azure Storage Queues","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/","og_locale":"en_US","og_type":"article","og_title":"Azure Storage Queues New Feature: Pop-Receipt on Add Message | Microsoft Azure Blog","og_description":"Announcing Popreceipt on Add Message functionality in Azure Storage Queues","og_url":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/","og_site_name":"Microsoft Azure Blog","article_publisher":"https:\/\/www.facebook.com\/microsoftazure","article_published_time":"2017-01-09T00:00:00+00:00","article_modified_time":"2025-06-10T13:15:38+00:00","author":"Microsoft Azure","twitter_card":"summary_large_image","twitter_creator":"@azure","twitter_site":"@azure","twitter_misc":{"Written by":"Microsoft Azure","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#article","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/"},"author":[{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/microsoft-azure\/","@type":"Person","@name":"Microsoft Azure"}],"headline":"Azure Storage Queues New Feature: Pop-Receipt on Add Message","datePublished":"2017-01-09T00:00:00+00:00","dateModified":"2025-06-10T13:15:38+00:00","mainEntityOfPage":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/"},"wordCount":515,"commentCount":0,"publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"articleSection":["AI + machine learning","Mobile"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/","name":"Azure Storage Queues New Feature: Pop-Receipt on Add Message | Microsoft Azure Blog","isPartOf":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website"},"datePublished":"2017-01-09T00:00:00+00:00","dateModified":"2025-06-10T13:15:38+00:00","description":"Announcing Popreceipt on Add Message functionality in Azure Storage Queues","breadcrumb":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-storage-queues-new-feature-pop-receipt-on-add-message\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog home","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/"},{"@type":"ListItem","position":2,"name":"AI + machine learning","item":"https:\/\/azure.microsoft.com\/en-us\/blog\/category\/ai-machine-learning\/"},{"@type":"ListItem","position":3,"name":"Azure Storage Queues New Feature: Pop-Receipt on Add Message"}]},{"@type":"WebSite","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#website","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","name":"Microsoft Azure Blog","description":"Get the latest Azure news, updates, and announcements from the Azure blog. From product updates to hot topics, hear from the Azure experts.","publisher":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/azure.microsoft.com\/en-us\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#organization","name":"Microsoft Azure Blog","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","contentUrl":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-content\/uploads\/2024\/06\/microsoft_logo.webp","width":512,"height":512,"caption":"Microsoft Azure Blog"},"image":{"@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/microsoftazure","https:\/\/x.com\/azure","https:\/\/www.instagram.com\/microsoftdeveloper\/","https:\/\/www.linkedin.com\/company\/16188386","https:\/\/www.youtube.com\/user\/windowsazure"]},{"@type":"Person","@id":"https:\/\/azure.microsoft.com\/en-us\/blog\/#\/schema\/person\/c702e5edd662b328b49b7e1180cab117","name":"shakir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g7664e653ea371ce16eaf75e9fa8952c4","url":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9342c7c05bb16548741bc5cd3a3e3b7ee0c8e746844ad2cc582db5beb5514c6f?s=96&d=mm&r=g","caption":"shakir"},"sameAs":["https:\/\/azure.microsoft.com"],"url":"https:\/\/azure.microsoft.com\/en-us\/blog\/author\/shakir\/"}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Azure Blog","distributor_original_site_url":"https:\/\/azure.microsoft.com\/en-us\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/4222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/comments?post=4222"}],"version-history":[{"count":1,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/4222\/revisions"}],"predecessor-version":[{"id":41207,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/posts\/4222\/revisions\/41207"}],"wp:attachment":[{"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/media?parent=4222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/categories?post=4222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tags?post=4222"},{"taxonomy":"audience","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/audience?post=4222"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/content-type?post=4222"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/product?post=4222"},{"taxonomy":"tech-community","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/tech-community?post=4222"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/topic?post=4222"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/azure.microsoft.com\/en-us\/blog\/wp-json\/wp\/v2\/coauthors?post=4222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}