有沒有辦法暫停連續的webjob - 停止從服務總線接收郵件的時間間隔? 我有一個系統,不斷收到發佈數據。然後發佈的數據被髮送到服務總線。我想知道是否有辦法停止處理消息。當然,其他解決方案不會發送這些消息 - 將它們保留在發送方系統中的隊列中。Azure服務總線連續Web工作暫停
1
A
回答
1
您可以通過在應用程序設置中將WEBJOBS_STOPPED設置爲1來停止網絡作業。這有點粗糙,但它停止了webjob。
0
您已經有排隊機制...服務總線。這聽起來像你正在通過使用ServiceBusTrigger屬性聲明式連接到隊列。即
public static void ProcessQueueMessage([QueueTrigger("queue")] string message, TextWriter log)
但這不是在連續的webjob中接收消息的唯一方法。您可以使用QueueClient對象來很容易地接收這些消息:
var connectionString = "//connection string here//";
var queueName = "samplequeue";
var client = QueueClient.CreateFromConnectionString(cnStr, queueName);
client.OnMessage(message =>
{
string msg = message.GetBody<string>();
// Process message here...
});
Console.ReadLine();
(有關詳細信息,請參閱https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues)
因此,在你webjob,你可以聆聽到兩條總線:首先是操作你已經在使用它來處理你的商業信息。新主題是控制總線。它總是在監聽,但是當你想改變操作隊列的行爲時,你只發送一條消息。
所以你發送「開始」的控制總線。收到該消息將調用上面的代碼並使運行總線開始處理消息。
如果要停止處理,請將「STOP」發送到控制總線。收到此消息後,請致電總線上的client.Close();
。這暫停了對消息的處理,直到收到下一個「START」消息。
當然,您可以對此進行擴展。例如,您可以向控制總線發送「PAUSE 10 MINUTES」,這可能會停止運行總線,然後設置一個定時器以在10分鐘後重新啓動它。你只受到你的想象力的限制!
就個人而言,我可能會使用Json消息而不是純文本,但任何適合您的需求。
相關問題
- 1. Scrapyd暫停/繼續工作
- 2. 連接Azure的服務總線
- 3. 連接Azure的服務總線與Android
- 4. Azure服務總線在代理服務器後面工作
- 5. 暫停Windows服務線程?
- 6. 連續任務等待並暫停
- 7. Azure服務總線問題
- 8. Azure服務總線消息
- 9. Azure服務總線速度
- 10. Azure服務總線3.2.2 BeginReceive()
- 11. Azure的服務總線AutoDeleteOnIdle
- 12. Azure服務總線部署
- 13. Azure服務總線超時
- 14. Python和Azure服務總線
- 15. Azure服務總線到WCF
- 16. 暫停在工作線程
- 17. 微軟Azure服務總線隊列工作作爲FIFO
- 18. Azure服務總線託管REST服務
- 19. 將IIS部署的WCF服務連接到Azure服務總線
- 20. 將多個服務器連接到Azure服務總線
- 21. Azure服務總線連接的Azure功能
- 22. 暫停服務
- 23. Azure工作者角色Webapi託管+服務總線
- 24. Windows Azure服務總線如何排隊重複檢測工作?
- 25. Azure服務總線 - SQLFilter無法按預期方式工作
- 26. Azure應用服務VS Web工作
- 27. 與AMQP的Azure服務總線事務
- 28. Azure服務總線和事務
- 29. 如何暫停工作流(聲明式服務庫)服務?
- 30. 監控連續的Azure Web作業
我猜想像創建一個時間框架,並檢查時間框架是否符合當前時間,如果它確實匹配沒有做任何事情 – 4c74356b41
是的,但如果我這樣做,我仍然收到消息。似乎不是最優雅的解決方案。也許最好的是甚至不發送消息,但我想知道是否有更好的方式,因爲我不想花時間實現排隊機制 –
您的webjob是否使用servicebustrigger? – Thomas