2016-04-06 78 views
1

是否有可能觸發Web任務從發佈請求執行?我的情景是,這項工作正在等待數據提供者通過https發佈數據,這應該會觸發數據處理 - 解析數據,然後應用一些業務操作。 我可以看到很多帶有隊列的示例,並且很容易測試並自行創建,但不知道如何填充隊列,但手動輸入某些數據除外。是否有可能以某種方式填充http post數據的隊列?由WebPost請求觸發的Azure WebJob

回答

0
  • 您可以使用Azure ServiceBus隊列。

    Azure Webjobs有一個ServicebusTrigger,您可以在 方案中使用它。

    如果您不能使用客戶端庫,您可以通過HTTP發送消息到一個隊列:

    Service Bus brokered messaging REST tutorial

  • 否則,如果你的消息是太大,您可以將信息存儲到Azure存儲斑點。 Azure Webjobs有BlobTrigger。但有一些限制:

    WebJobs SDK掃描日誌文件以監視新的或更改的斑點。這個過程不是實時的;一個函數可能不會觸發,直到blob創建後幾分鐘或更長時間。另外,基數爲storage logs are created on a "best efforts";不保證所有事件都將被捕獲。在某些情況下,日誌可能會丟失。如果blob觸發器的速度和可靠性限制對於您的應用程序不可接受,則建議的方法是在創建blob時創建隊列消息,並在處理blob的函數上使用QueueTrigger屬性而不是BlobTrigger屬性。

+0

我可以看到你的想法是如何工作的。我現在關心的是,從服務總線發送的消息會過大 - 可能大約爲2-3 MB xml數據。在我的情況下,最好設置一個簡單的Web應用程序,它可以捕獲所有的請求並將它們保存在數據庫的某個地方。然後,這將在消息隊列中創建一條消息,通過webjob處理更改。我甚至認爲,爲什麼不在Web應用程序本身中執行該過程,因爲隊列可能需要一定的處理。我需要一條消息,在消息到達時立即進行處理,解決方案可擴展。 –

+0

webjob將收到的消息將只是接收到新項目,然後將從DB讀取xml數據。這不是太複雜的想法嗎?這將很容易擴展我可以增加作業的數量,不確定實際接收數據的Web應用程序 - 我想可以使用負載平衡器來完成。我可能會做的最初是最簡單的解決方案。 –

+1

因此您可以使用blob存儲。有一個webjob blobtrigger。 https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-webjobs-sdk-storage-blobs-how-to/。我明天將編輯我的文章。 – Thomas