﻿
{"id":16966,"date":"2020-08-01T01:44:00","date_gmt":"2020-08-01T01:44:00","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=16966"},"modified":"2020-08-01T01:45:03","modified_gmt":"2020-08-01T01:45:03","slug":"azure-storage-serisi-8-azure-queue-storage-ve-asp-net-core-ile-kullanimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/azure-storage-serisi-8-azure-queue-storage-ve-asp-net-core-ile-kullanimi\/","title":{"rendered":"Azure Storage Serisi #8 \u2013 Azure Queue Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde <a href=\"https:\/\/www.gencayyildiz.com\/blog\/azure-storage-yazi-dizisi\/\" rel=\"noopener noreferrer\" target=\"_blank\">Azure Storage Yaz\u0131 Dizisi<\/a>nin sonuncu makalesi olan Azure Queue Storage \u00fczerine konu\u015fuyor olaca\u011f\u0131z.<\/p>\n<h3 style=\"color: #e83e8c;\">Azure Queue Storage Nedir?<\/h3>\n<p>Azure Queue Storage, bir mesaj kuyruk sistemidir. Mesaj kuyruk sistemleri; uzun s\u00fcren i\u015flemlerin arka planda bir kuyru\u011fa at\u0131larak o kuyru\u011fu dinleyen ba\u015fka uygulamalar taraf\u0131ndan e\u015fzamans\u0131z bir \u015fekilde i\u015flenmesini sa\u011flayan yap\u0131lard\u0131r. <span style=\"color:purple;font-size:10px;\">Bknz: <a href=\"https:\/\/www.gencayyildiz.com\/blog\/rabbitmq-yazi-dizisi\/\" rel=\"noopener noreferrer\" target=\"_blank\">RabbitMQ<\/a><\/span><\/p>\n<p>Azure Queue Storage&#8217;a g\u00f6nderilen mesaj\u0131n boyutu en fazla <u>64 KB<\/u> olabilir. Her bir mesaj\u0131n default \u00f6mr\u00fc <u>7 g\u00fcnd\u00fcr<\/u>. 7 g\u00fcn sonras\u0131nda mesajlar otomatik silinir. Mesaj \u00f6m\u00fcrlerini custom bir \u015fekilde de\u011fi\u015ftirebilir yahut <span style=\"color:red;\">-1<\/span> de\u011ferini vermek kayd\u0131yla \u00f6m\u00fcr boyu kuyrukta tutabilirsiniz. <\/p>\n<h3 style=\"color: #e83e8c;\">Azure Queue Storage Kavramlar\u0131 Nelerdir?<\/h3>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.png\" alt=\"Azure Storage Serisi #8 \u2013 Azure Queue Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"286\" height=\"86\" class=\"alignleft size-full wp-image-16975\" \/><\/a><br \/>\n<em style=\"color:purple;\">URL Format<\/em><br \/>\nAzure Queue Storage&#8217;da ki mesaj kuyruklar\u0131n\u0131 a\u015fa\u011f\u0131daki formatta endpoint ile url bi\u00e7iminde temsil edebilirsiniz.<br \/>\n<code style=\"color:red;\"><strong>https:\/\/&lt;account_name&gt;.queue.core.windows.net\/&lt;queue_name&gt;<\/strong><\/code><\/p>\n<p>\u00d6rne\u011fin yukar\u0131da payla\u015f\u0131lan \u015femadaki mesaj kuyru\u011funu \u015f\u00f6yle temsil edebilirsiniz;<br \/>\n<code style=\"color:red;\"><strong>https:\/\/myaccount.queue.core.windows.net\/images-to-download<\/strong><\/code><\/p>\n<p><em style=\"color:purple;\">Storage account<\/em><br \/>\nAzure Queue Storage, bir Azure Storega servisidir. Dolay\u0131s\u0131yla t\u00fcm i\u015flemler bir storage hesab\u0131 \u00fczerinden ger\u00e7ekle\u015ftirilir.<\/p>\n<p><em style=\"color:purple;\">Queue<\/em><br \/>\nBir dizi mesaj i\u00e7eren yap\u0131d\u0131r. Queue isimleri komple k\u00fc\u00e7\u00fck harf olmal\u0131d\u0131r.<\/p>\n<p><em style=\"color:purple;\">Message<\/em><br \/>\nHerhangi bir formatta <u>64 KB&#8217;a<\/u> kadar varan mesajlard\u0131r.<\/p>\n<h3 style=\"color: #e83e8c;\">Visibility \u00d6zelli\u011fi(G\u00f6r\u00fcn\u00fcrl\u00fck)<\/h3>\n<p>Bir kuyru\u011fa verilen mesaj\u0131n ayn\u0131 anda birden fazla consumer(t\u00fcketici) taraf\u0131ndan t\u00fcketilmemesi i\u00e7in default <u>30 saniye<\/u> kuyrukta g\u00f6r\u00fcnmez olmas\u0131d\u0131r. Dolay\u0131s\u0131yla ilgili mesaj\u0131 30 saniye i\u00e7erisinde i\u015flemek gerekmekte aksi taktirde ba\u015fka consumerlar&#8217;a g\u00f6r\u00fcn\u00fcr olaca\u011f\u0131ndan dolay\u0131 e\u015fzamanl\u0131 olarak farkl\u0131 bir consumer taraf\u0131ndan i\u015flenebilir olacakt\u0131r. Buradaki i\u015fleme s\u00fcresinin yap\u0131lacak i\u015fin boyutuna g\u00f6re tutarl\u0131 bir \u015fekilde verilmesine \u00f6zen g\u00f6sterilmelidir. G\u00f6r\u00fcn\u00fcrl\u00fck s\u00fcresine &#8216;<em>Visibility Time Out<\/em>&#8216; denmektedir ve maksimum <u>7 g\u00fcn<\/u> almaktad\u0131r.<\/p>\n<h3 style=\"color: #e83e8c;\">Asp.NET Core \u0130le Azure Queue Storage Kullan\u0131m\u0131<\/h3>\n<p>Asp.NET Core ile Azure Queue Storage kullan\u0131m\u0131 i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 s\u0131ras\u0131yla ger\u00e7ekle\u015ftirmeniz yeterli olacakt\u0131r;<\/p>\n<ul>\n<li><strong>Ad\u0131m 1<\/strong><br \/>\nBir Asp.NET Core uygulamas\u0131 olu\u015fturunuz ve <a href=\"https:\/\/www.nuget.org\/packages\/Azure.Storage.Queues\/12.3.2?_src=template\" rel=\"noopener noreferrer\" target=\"_blank\">Azure.Storage.Queues<\/a> k\u00fct\u00fcphanesini uygulamaya entegre ediniz.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg\" alt=\"Azure Storage Serisi #8 \u2013 Azure Queue Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"425\" height=\"144\" class=\"aligncenter size-full wp-image-16984\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg 425w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/07\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-300x102.jpg 300w\" sizes=\"auto, (max-width: 425px) 100vw, 425px\" \/><\/a>\n<\/li>\n<li><strong>Ad\u0131m 2<\/strong><br \/>\n&#8216;AzQueue&#8217; isminde bir s\u0131n\u0131f olu\u015fturunuz ve i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi geli\u015ftiriniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class AzQueue\r\n    {\r\n        readonly QueueClient _queueClient;\r\n        public AzQueue(string queueName)\r\n        {\r\n            _queueClient = new QueueClient(&quot;DefaultEndpointsProtocol=https;AccountName=gencayy******2Zsyk7Rk54Bs1BxP4MT7tTeHbNe\/WljTCZQt7RfM****************ndows.net&quot;, queueName);\r\n            _queueClient.CreateIfNotExists();\r\n        }\r\n        public async Task SendMessageAsync(string message)\r\n        {\r\n            if (await _queueClient.ExistsAsync())\r\n                await _queueClient.SendMessageAsync(message);\r\n            else\r\n                throw new Exception(&quot;Mesaj g\u00f6nderilmeye \u00e7al\u0131\u015f\u0131l\u0131rken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n        }\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ Mesaj\u0131 kuyruktan al\u0131r ve siler.\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public async Task&lt;QueueMessage&gt; RetrieveNextMessageAsync()\r\n        {\r\n            if (await _queueClient.ExistsAsync())\r\n            {\r\n                Response&lt;QueueProperties&gt; response = await _queueClient.GetPropertiesAsync();\r\n                \/\/ApproximateMessagesCount : \u00d6nbelle\u011fe al\u0131nan yakla\u015f\u0131k mesaj say\u0131s\u0131n\u0131 d\u00f6ner.\r\n                if (response.Value.ApproximateMessagesCount &gt; 0)\r\n                {\r\n                    QueueMessage&#x5B;] queueMessages = await _queueClient.ReceiveMessagesAsync();\r\n                    if (queueMessages.Any())\r\n                        return queueMessages&#x5B;0];\r\n                }\r\n                return null;\r\n            }\r\n            else\r\n                throw new Exception(&quot;Mesaj okunurken(Retrieve) beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n        }\r\n        \/\/\/ &lt;summary&gt;\r\n        \/\/\/ Mesaj\u0131 kuyruktan al\u0131r lakin silmez!\r\n        \/\/\/ &lt;\/summary&gt;\r\n        public async Task&lt;PeekedMessage&gt; PeekMessageAsync()\r\n        {\r\n            if (await _queueClient.ExistsAsync())\r\n            {\r\n                Response&lt;QueueProperties&gt; response = await _queueClient.GetPropertiesAsync();\r\n                \/\/ApproximateMessagesCount : \u00d6nbelle\u011fe al\u0131nan yakla\u015f\u0131k mesaj say\u0131s\u0131n\u0131 d\u00f6ner.\r\n                if (response.Value.ApproximateMessagesCount &gt; 0)\r\n                {\r\n                    PeekedMessage&#x5B;] peekedMessages = await _queueClient.PeekMessagesAsync();\r\n                    if (peekedMessages.Any())\r\n                        return peekedMessages&#x5B;0];\r\n                }\r\n                return null;\r\n            }\r\n            else\r\n                throw new Exception(&quot;Mesaj okunurken(Peek) beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n        }\r\n        public async Task UpdateMessageAsync(string newMessage)\r\n        {\r\n            if (await _queueClient.ExistsAsync())\r\n            {\r\n                QueueMessage&#x5B;] queueMessages = await _queueClient.ReceiveMessagesAsync();\r\n                \/\/TimeSpan.FromSeconds(60) ile 60 saniye daha visiblty \u00f6zelli\u011fini geni\u015fleterek ilgili mesaj\u0131 g\u00f6r\u00fcnmez yap\u0131yoruz.\r\n                await _queueClient.UpdateMessageAsync(queueMessages&#x5B;0].MessageId, queueMessages&#x5B;0].PopReceipt, newMessage, TimeSpan.FromSeconds(60));\r\n            }\r\n            else\r\n                throw new Exception(&quot;Mesaj g\u00fcncellenirken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n        }\r\n        public async Task DeleteMessageAsync()\r\n        {\r\n            if (await _queueClient.ExistsAsync())\r\n            {\r\n                QueueMessage&#x5B;] queueMessages = await _queueClient.ReceiveMessagesAsync();\r\n                await _queueClient.DeleteMessageAsync(queueMessages&#x5B;0].MessageId, queueMessages&#x5B;0].PopReceipt);\r\n            }\r\n            else\r\n                throw new Exception(&quot;Mesaj silinirken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n        }\r\n        public async Task DeleteQueueAsync()\r\n        {\r\n            if (await _queueClient.ExistsAsync())\r\n                await _queueClient.DeleteAsync();\r\n            else\r\n                throw new Exception(&quot;Kuyruk silinirken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu izah etmemiz gerekirse e\u011fer;<\/p>\n<ul>\n<li><em>6. sat\u0131rda, storage account&#8217;un connection string&#8217;i verilmektedir.<\/em><\/li>\n<li><em>12. sat\u0131rda, &#8216;SendMessageAsync&#8217; metodu ile kuyru\u011fa mesaj g\u00f6nderilmektedir. \u0130lgili metodun 3. overload&#8217;\u0131na g\u00f6z atarsak e\u011fer;<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg\" alt=\"\" width=\"1025\" height=\"44\" class=\"aligncenter size-full wp-image-16988\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.jpg 1025w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-300x13.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-768x33.jpg 768w\" sizes=\"auto, (max-width: 1025px) 100vw, 1025px\" \/><\/a><br \/>\n&#8216;visibilityTimeout&#8217; ve &#8216;timeToLive&#8217; parametreleri mevcuttur. Bu parametreleri s\u0131ras\u0131yla a\u00e7\u0131klarsak e\u011fer;<\/p>\n<p><span style=\"color:green;\">visibilityTimeout<\/span>, kuyruktan mesaj al\u0131nd\u0131\u011f\u0131nda o mesaj\u0131n kuyrukta ne kadar s\u00fcre g\u00f6r\u00fcnmez olmas\u0131n\u0131 istiyorsan\u0131z e\u011fer buradan belirleyebilirsiniz. Default 30 saniyedir.<\/p>\n<p><span style=\"color:green;\">timeToLive<\/span>, mesaj\u0131n ya\u015fam s\u00fcresini belirler. Default olarak 7 g\u00fcnd\u00fcr. TimeSpan.FromSecond(-1) de\u011feri ile \u00f6m\u00fcr boyu mesaj tutulabilir.<\/em>\n<\/li>\n<li><em>25. sat\u0131rda, &#8216;ApproximateMessagesCount&#8217; property&#8217;si \u00f6nbelle\u011fe al\u0131nan yakla\u015f\u0131k mesaj say\u0131s\u0131n\u0131 belirtmektedir. B\u00f6ylece, yakla\u015f\u0131k olarak ne kadarl\u0131k mesaj \u00fczerinde i\u015flem yapabildi\u011fimizi \u00f6l\u00e7m\u00fc\u015f oluyoruz.<\/em><\/li>\n<li><em>27. sat\u0131rda, &#8216;ReceiveMessagesAsync&#8217; metodu ile kuyruktaki mesaj elde edilmekte ve kuyruktan silinmektedir.<\/em><\/li>\n<li><em>47. sat\u0131rda, &#8216;PeekMessagesAsync&#8217; metodu ise kuyruktaki mesaj\u0131 elde etmekte lakin kuyruktan silmemektedir.<\/em><\/li>\n<\/ul>\n<\/li>\n<li><strong>Ad\u0131m 3<\/strong><br \/>\nGeli\u015ftirilen bu s\u0131n\u0131f\u0131 uygulamaya servis olarak ekleyiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class Startup\r\n    {\r\n        .\r\n        .\r\n        .\r\n        public void ConfigureServices(IServiceCollection services)\r\n        {\r\n            .\r\n            .\r\n            .\r\n            services.AddSingleton&lt;AzQueue&gt;(new AzQueue(&quot;mymessage&quot;));\r\n            .\r\n            .\r\n            .\r\n        }\r\n\r\n        .\r\n        .\r\n        .\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funa bakarsan\u0131z e\u011fer ilgili s\u0131n\u0131f servis olarak eklenirken biryandan da constructor \u00fczerinden mesaj kuyru\u011funun ismide belirtilmektedir.\n<\/li>\n<li><strong>Ad\u0131m 4<\/strong><br \/>\nArd\u0131ndan isimleri &#8216;ProducerController&#8217; ve &#8216;ConsumerController&#8217; olmak \u00fczere iki adet controller s\u0131n\u0131f\u0131 olu\u015fturunuz ve i\u00e7eriklerini a\u015fa\u011f\u0131daki gibi geli\u015ftiriniz.<\/p>\n<p>ProducerController;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;Route(&quot;api\/&#x5B;controller]&quot;)]\r\n    &#x5B;ApiController]\r\n    public class ProducerController : ControllerBase\r\n    {\r\n        readonly AzQueue _azQueue;\r\n        public ProducerController(AzQueue azQueue)\r\n        {\r\n            _azQueue = azQueue;\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]\/{messageText}&quot;)]\r\n        public async Task&lt;IActionResult&gt; SendMessageAsync(string messageText)\r\n        {\r\n            try\r\n            {\r\n                await _azQueue.SendMessageAsync(messageText);\r\n                return Ok(true);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return Ok(ex.Message);\r\n            }\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]\/{newMessageText}&quot;)]\r\n        public async Task&lt;IActionResult&gt; UpdateMessageAsync(string newMessageText)\r\n        {\r\n            try\r\n            {\r\n                await _azQueue.UpdateMessageAsync(newMessageText);\r\n                return Ok(true);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return Ok(ex.Message);\r\n            }\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; DeleteMessageAsync()\r\n        {\r\n            try\r\n            {\r\n                await _azQueue.DeleteMessageAsync();\r\n                return Ok(true);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return Ok(ex.Message);\r\n            }\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; DeleteQueueAsync()\r\n        {\r\n            try\r\n            {\r\n                await _azQueue.DeleteQueueAsync();\r\n                return Ok(true);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return Ok(ex.Message);\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p>ConsumerController;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;Route(&quot;api\/&#x5B;controller]&quot;)]\r\n    &#x5B;ApiController]\r\n    public class ConsumerController : ControllerBase\r\n    {\r\n        readonly AzQueue _azQueue;\r\n        public ConsumerController(AzQueue azQueue)\r\n        {\r\n            _azQueue = azQueue;\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; RetrieveMessageAsync()\r\n        {\r\n            try\r\n            {\r\n                QueueMessage queueMessage = await _azQueue.RetrieveNextMessageAsync();\r\n                return Ok(queueMessage?.MessageText);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return Ok(ex.Message);\r\n            }\r\n        }\r\n        &#x5B;HttpGet(&quot;&#x5B;action]&quot;)]\r\n        public async Task&lt;IActionResult&gt; PeekMessageAsync()\r\n        {\r\n            try\r\n            {\r\n                PeekedMessage peekedMessage = await _azQueue.PeekMessageAsync();\r\n                return Ok(peekedMessage?.MessageText);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return Ok(ex.Message);\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<\/li>\n<\/ul>\n<p>Bu i\u015flemlerden sonra art\u0131k uygulamay\u0131 test etmek i\u00e7in derleyip, \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<p><strong>Test Edelim<\/strong><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131.gif\" alt=\"Azure Storage Serisi #8 \u2013 Azure Queue Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"800\" height=\"283\" class=\"aligncenter size-full wp-image-16999\" \/><\/a><\/p>\n<p>S\u00fcre\u00e7te kuyru\u011fu <a href=\"https:\/\/portal.azure.com\/\" rel=\"noopener noreferrer\" target=\"_blank\">Azure portal<\/a> \u00fczerinden takip edebilmek i\u00e7in storage account&#8217;unuzdan &#8216;Queues&#8217;e ve onun da ard\u0131ndan ilgili kuyru\u011fa t\u0131klay\u0131n\u0131z.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1.jpg\" alt=\"Azure Storage Serisi #8 \u2013 Azure Queue Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"1227\" height=\"229\" class=\"aligncenter size-full wp-image-17000\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1.jpg 1227w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1-300x56.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1-1024x191.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-1-768x143.jpg 768w\" sizes=\"auto, (max-width: 1227px) 100vw, 1227px\" \/><\/a><br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2.jpg\" alt=\"Azure Storage Serisi #8 \u2013 Azure Queue Storage ve Asp.NET Core \u0130le Kullan\u0131m\u0131\" width=\"737\" height=\"563\" class=\"aligncenter size-full wp-image-17004\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2.jpg 737w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/Azure-Storage-Serisi-8-\u2013-Azure-Queue-Storage-ve-Asp.NET-Core-\u0130le-Kullan\u0131m\u0131-2-300x229.jpg 300w\" sizes=\"auto, (max-width: 737px) 100vw, 737px\" \/><\/a><\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere&#8230; Kuyruktaki t\u00fcm mesajlar burada listelenmektedir.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek projeyi indirmek i\u00e7in <a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/08\/AzureQueueStorageExample.zip\">buraya<\/a> t\u0131klay\u0131n\u0131z.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde Azure Storage Yaz\u0131 Dizisinin sonuncu makalesi olan Azure Queue Storage \u00fczerine konu\u015fuyor olaca\u011f\u0131z. Azure Queue Storage Nedir? Azure Queue Storage, bir mesaj kuyruk sistemidir. Mesaj kuyruk sistemleri; uzun s\u00fcren i\u015flemlerin arka&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":16718,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3102,3121],"tags":[3657,3658,3659,3604,3660],"class_list":["post-16966","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core","category-azure","tag-azure-queue-storage","tag-azure-queue-storage-asp-net-core","tag-azure-queue-storage-visibility","tag-azure-storage","tag-visibility-time-out"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=16966"}],"version-history":[{"count":31,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16966\/revisions"}],"predecessor-version":[{"id":17007,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/16966\/revisions\/17007"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/16718"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=16966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=16966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=16966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}