Azure Function 實做 Queue trigger

  • 281
  • 0
  • 2021-03-21

現在架構設計很常談到微服務和無伺服器,而在 Azure  上面最適合拿來做這類型應用的就是 Azure Function 了,Azure Function 支援很多觸發器 (Trigger),這邊針對 Queue 來介紹如何實做 Queue trigger 的 Azure Function。

前言

現在架構設計很常談到微服務和無伺服器,而在 Azure  上面最適合拿來做這類型應用的就是 Azure Function 了,Azure Function 支援很多觸發器 (Trigger),這邊針對 Queue 來介紹如何實做 Queue trigger 的 Azure Function。

實做

建立儲存體和 Queue

首先新增儲存體帳戶,搜尋 Storge Account 就可以找到此服務來建立。

詳細設定就不特別解釋每個設定,大部分都可以下一步完成,只有儲存體帳戶類型複寫模式需特別注意選擇。

儲存體帳戶建議選擇 v2 功能上會比較齊全,但是如果針對我們這次會用到的 Queue 選擇 v1 和 v2 差別就不大了。
複寫模式則可以針對資料要保護的層級作選擇, Azure 會針對不同模式儲存的數量和位置都不同,當然價格上也有很大的不同了,詳細差異可以參考這邊

建立好之後,點選佇列 (Queue) 並且建立一個佇列。

新增佇列的時候名稱會在之後建立 Azure Function 時候使用到,這邊可以輸入 myqueue-items ,因為範本預設會使用這個名稱,當然也可以輸入自己想要的名稱,只要在後面建立程式的時候記得修改就好。

接下來到存取金鑰去取得金鑰,之後程式會使用到。

如果是在開發測試階段,我們也可以透過本機的儲存體模擬器來建立 Queue,就可以節省一些費用,要正式上線再建立就好。

首先先下載官方的 Microsoft Azure Storage Explorer 來管理儲存體。安裝好之後打開程式,點選到 Storage Accounts -> 模擬器 -> Queue 來建立佇列。之後要測試的時候就可以使用了。

建立 Azure Function

開啟 VS 建立新專案,搜尋 Azure Finctions 可以看到範本來建立專案。

接下來到了底下畫面的時候建議選擇 Azure Functions v3,其中版本差別可以參考後面的圖,主要是程式語言支援度和一些功能上的差別。然後選擇 Queue trigger,再來輸入連線字串名稱和 Queue 名稱,這邊的 Queue 名稱就是我們前面建立佇列的時候輸入的名稱,如果沒有一致的話,到時候是無法正確觸發事件的。

接下來開啟 local.settings.json 新增前面步驟輸入的連線字串名稱,我這邊輸入的是 StorageConnectionAppSetting,值的部分如果要使用儲存體來測試就輸入 UseDevelopmentStorage=true ,要直接用 Azure 來測試就輸入前面建立時候取的的連線金鑰。

測試

再來直接執行程式,新增一個佇列,我們就可以看到觸發的結果了。這邊我用儲存體模擬器來測試。

之後我們就可以在輸出視窗看到我們輸入的佇列訊息了。

部署到 Azure

之後在專案上面按右鍵選擇發佈,就可以部署到 Azure 上面了。

結論

微服務和無伺服器還有很多可以介紹的主題,這邊是以最簡單的一個範例來介紹 Azure 上面最適合做這類型應用的服務,以這個範例來講,我們可以在程式碼部分寫發信的程式,就可以完成一個發信的微服務,後續只要把發信相關內容和資訊新增到佇列就可以完成觸發的動作,我們就可以把發信這一個功能獨立出來,因為很多時候我們程式並不需要等待發信的結果,像是會員註冊信件等,就會很適合這樣的情境。

參考資料

  1. Azure Queue storage trigger for Azure Functions
  2. Azure Storage redundancy
  3. Get started with Storage Explorer