Docker
有一個工作隊列有什麼好處?
我目前正在建構一個向使用者發送交易電子郵件的 API。我用工作隊列來做這件事,尤其是公牛。在開發過程中,我想到了一些事情;這些工作實際在哪裡執行?目前,我通過公牛將這些作業發送到在我電腦上的 docker 容器中執行的 redis 數據庫。我的第一個想法是這些作業在 redis 容器中執行,但我認為這不是真的,因為那個 redis 容器沒有執行 NodeJS,而 NodeJS 正是我用於 API 的。
我想這些作業實際上是在創建它們的同一台機器上執行的。但是,如果是這樣的話,那麼擁有一個工作隊列有什麼好處呢?我認為擁有一個作業隊列的目的是將任務委託給其他東西,這樣 API 就不會因發送所有這些電子郵件而減慢。據我了解,現在發生的一切只是通過向redis發送和接收作業來延遲任務。
我對工作隊列很陌生。我希望我已經足夠清楚地描述了我的情況。
謝謝你。
作業隊列用於記錄工作項。
可以選擇由與應用程序的其餘部分分開的執行緒來處理隊列。這對於利用多個 CPU 在後台進行非同步處理很有用。
同樣有用的是耐用性。如果在應用程序重新啟動後仍需要發送排隊等待發送的電子郵件,則需要儲存。這實際上並不是微不足道的。
即使從應用程序伺服器處理,隊列可能仍然有用。取決於所需的功能。
此實現使用遠端數據庫進行儲存。因此,請隨意編寫一個工作服務(使用公牛)並在單獨的容器中執行它。
- 主應用程序容器
add
sa 工作項並繼續前進。- 隊列將其拾取,Redis 提供儲存。
- 工人容器
process
es 它並做這件事。增加concurrency
讓它並行呼叫幾次。