2016-09-23 193 views
1

我正在處理一個應用程序,我在多臺服務器上爲不同的計算機執行長操作。在使用hangfire/topps寫入的機器上運行Windows服務。每臺機器一次只能運行一項操作。另外我想在每臺服務器上定期執行一些狀態檢查和清理作業,所以我不能將它們作爲作業排隊。與多個服務器的Hangfire

有沒有辦法做到這一點在hangfire?另外,是否有辦法將後續工作作爲早期工作發送到同一臺服務器?附加:我知道一種可能性是添加另一個hangfire層:使每個服務都成爲一個擁有自己的數據庫的hangfire客戶端並自行服務,然後爲他們安排重複工作,但這看起來非常複雜 - 尤其是擴展和添加服務器時。

+0

Hangfire以隊列形式實現,每個作業只分配一個服務器,因此不需要擔心。但是,沒有能力建立與特定服務器AFAIK的親和力。您必須在應用內協調,可能使用分佈式緩存或鍵/值層。 – HackedByChinese

+0

@HackedByChinese:我知道每個工作只有一臺服務器。我需要它,每臺服務器一個作業。我可以用WorkerCount來做。但是接下來有一些工作要定期在每臺服務器上運行,因爲他們在服務器上進行清理...... – EluciusFTW

回答

0

如果您的任務是在每臺服務器上運行某個計劃任務,我認爲最好的選擇是自己實現它,Hangfire不支持事件處理,只支持命令處理。我認爲,你已經達到了Hangfire的可能性,並需要轉向更強大和通用的工具。

對於事件及其處理,您可以使用其他系統,例如RabbitMQ。您只需指定事件生成器並訂閱此事件的所有機器。

+0

提交/收聽Internet上的事件?機器不在本地網絡中! – EluciusFTW

+0

他們可以無處不在。事件的概念和它們的處理在兔子中實現。所以,是的,你可以通過互聯網訂閱。閱讀此:https://www.rabbitmq.com/tutorials/tutorial-three-dotnet.html – eocron

+0

我不確定我現在想要實現另一個外部工具,但感謝您的建議!如果我發現沒有辦法掛火,我可能會被迫。 – EluciusFTW

0

我知道這有點遲,但我們處理這類事情的方式只是編寫一個簡單的控制檯應用程序並使用Windows任務計劃程序進行計劃。