簡體   English   中英

Azure Function 和服務總線 - 有條件地添加新消息

[英]Azure Function and Service bus - conditionally add a new message

當我的應用程序需要發送 email 時,它會創建一個數據庫條目並將其放入數據庫中,然后將一條消息放在由 Azure Z86408593C34AF77FDD10DF932F8B526 監控的服務總線上運行為

當 WebJob 進程完成發送 email 時,我希望它有條件地在服務總線隊列上放置一條新的預定消息 - 實際上,我希望 WebJob 在 5 分鍾內被喚醒,以查看數據庫中是否有 email需要發送。

但是如果隊列上已經有一條消息需要 WebJob 處理,那么我不想把這個預定的消息放在隊列上,我只想完成處理,因為我知道隊列會被喚醒WebJob 立即重新開始,所以這次不需要在隊列中添加 5 分鍾的預定消息,它將在下一個 WebJob 完成后放入隊列。

我也在使用來自 App 的預定消息,因為將來有時需要發送消息,所以我將預定消息添加到服務總線隊列中,以在特定時間喚醒發送者。

我想在隊列上做一個 peekBatch 以查看是否已經有一條消息會導致 WebJob 在 5 分鍾過去之前被喚醒。 如果有,我想跳過將新消息放入隊列,但如果沒有,我想將消息添加到隊列中。

需要明確的是,此 peekBatch 需要在使用“ServiceBusTrigger”的 WebJob 內的 Azure Function 內發生。

我想不通的是如何訪問一些東西來做 PeekBatch。 我找到了如何從 ServiceBusTrigger function 中發送消息的示例

MessageReceiver 實例作為服務總線觸發器的參數傳入。 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-trigger?tabs=csharp#usage

使用此實例,您應該能夠在訂閱上調用 PeekAsync。

順便說一句,如果您僅出於觸發 function 來檢查數據庫的目的使用預定消息,那么我要為自己嘗試的一件事是將主要功能重構為服務並設置第二個 function定時器觸發器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM