2015-08-09 49 views
1

我剛開始使用Azure Webjobs發送有關使用我開發的工具完成的成功檢查的電子郵件通知。 Webjob由控制器發送的CloudQueueMessage觸發。基本上一切工作都很好。Azure Webjobs:重播成功函數行爲

但是現在我想知道如何處理Webjobs儀表板中的'Replay Function'按鈕:我試圖用這個按鈕來重播一個成功的CloudQueueMessage(並因此重新發送郵件)。
消息被添加到隊列中,並且我的Webjob被觸發,但是如果檢查CloudQueueMessage,則某些以前設置的屬性(如Id和PopReceipt)爲空。什麼導致這種行爲?

我需要Id,因爲在我的Webjob中,我使用'UpdateMessage()'來設置消息的處理狀態。

回答

2

重放實際上並未入列新消息 - 它將消息的json /字符串正文(顯示在Replay UI中)並使您的函數通過「返回通道」調用 - json/string數據用於在內存中構造一個新的隊列消息,這就是你的函數被調用的內容。所以只有UI中輸入字符串中包含的信息纔會傳遞給你的函數。

請注意,在調用之前,您可以修改消息正文。在播放之前,您可以設置所需的位數嗎?

+0

謝謝!這種行爲是否記錄在某處? 在我的webjob中,我首先發送一封電子郵件,然後創建一個數據庫條目。我更新消息以避免在數據庫更新期間出現錯誤時重新發送電子郵件。 CloudQueueMessage.Id對此是必需的。 我認爲如果重播消息只在內存中,那麼webjob將不會被第二次觸發。所以一切都應該沒問題。 我將在更新消息之前檢查Id和PopReceipt是否爲空(表示這是內存中的消息)。 >>'你可以修改郵件正文。' 我想這樣設置MessageId是不可能的,是嗎? – krombi

+0

我不確定是否有關於此的具體細節,但是有Dashboard文檔頁面鏈接到此主頁面:https://azure.microsoft.com/en-us/documentation/articles/websites-webjobs-resources/ – mathewc

+0

此外,通過「修改郵件正文」,我指的是重播UI中字符串中的任何數據。如果你綁定了一個POCO,你可以設置JSON屬性等,並且你的函數會得到它們。 – mathewc