2016-08-10 33 views
1

我有一個連續的webjob需要在TimerTrigger的兩個位置運行兩個webapps。當我將Visual Studio的webjob部署到兩個位置時,一切正常,兩個webjobs同時運行。章魚部署連續WebJob不在兩個位置同時運行

現在我準備好開始使用Octopus-Deploy進行部署。我已成功創建了一個包含兩個步驟的計劃,並將這些程序集放在Azure中的Web應用程序(app_data\jobs\continuous\{jobname})下的正確位置。問題是一次只有一個webjob執行它的工作,即使兩個webjobs都處於Running狀態。如果我停止並啓動正在執行的那個,另一個webjob開始執行其作業,而我關閉/打開的作業有一個正在運行的狀態,但不會執行其作業。另外,如果我只從視覺工作室中重新部署其中的一個,他們都會在兩個位置再次執行工作。

我對單身人士沒有做任何事情,並且實際上已經嘗試使用{is_singleton: false}的'settings.job'文件關閉它。有沒有什麼Octopus在使Azure認爲webjob是單身的軟件包?

回答

2

我的猜測是,這個問題是由於您部署的兩個應用程序使用相同的存儲帳戶和主機ID導致的。當你這樣做時,WebJobs SDK將其視爲一個已經擴展到兩個實例的單個Web應用程序,並確保該計時器僅在其中一個上運行。

最簡單的解決方案是爲每個應用程序使用不同的存儲帳戶。

+0

你說得對,我爲每個webjob創建了獨立的存儲帳戶。一旦我改變了連接字符串,他們都按預期執行了他們的工作。我確實有一個後續問題。什麼是主機ID? – Daryl

+0

@mathewc可以解釋這個比我好,所以我會讓他閃耀:) –

+0

HostId指的是JobHostConfiguration.HostId(在源[這裏](https://github.com/Azure/azure-webjobs-sdk/斑點/主/ SRC/Microsoft.Azure.WebJobs.Host/JobHostConfiguration.cs#L106))。基本上它是由同一個JobHost的多個實例共享的ID。運行時確保所有實例共享相同的ID。 TimerTrigger的單例行爲在wiki [這裏](https://github.com/Azure/azure-webjobs-sdk-extensions/wiki/TimerTrigger)中有解釋。 – mathewc

相關問題