[Azure] C# 使用 Azure.Storage.Queues 寫入佇列(Queue) + 延遲顯示( VisibilityTimeout )
2022-08-12
上一篇文章 (C# 使用 Azure.Storage.Queues 寫入佇列(Queue) + 取得資料 )我們談到了簡單操控 Azure Queue ,當作一個可以跨機器跨系統的 Queue 的實作方式,傳統很多時候會用到 Redis 來解決,但是用這應該便宜很多
不過上篇文章說到,他有一個問題,就是你取用後,如果時間沒有到他只會紀錄取用次數跟一般你理解的 Dequeue 不太一樣。
首先,其實在 SendMessage 可以傳入一個參數 visibilityTimeout 這是代表在一個時間後可以顯示,所以我就設計一個案例
我先寫入十筆資料都顯示延遲五秒後再出現,之後再寫入200筆立即出現的資料(但是我有延遲一秒寫一筆為了方便觀測),之後有一個執行緒是一直做 ReceiveMessage的動作
1. 寫入資料
2.讀取資料
3.呼叫
結果
因為一開始寫入的資料都延遲了五秒,所以再立即的佇列部分會被先取出來,一直到被延遲的資料時間到了就會出現
這設計可以應用在一些地方,像是限時開始搶票的東西,大概就先寫到這之後有些心得我再繼續分享..
reference:
標籤:
.Net6
,
.netcore
,
Azure
,
AzureStorage
,
C#
-- Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer. 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...