說我有一個快遞服務,它發送電子郵件:Node.js是否需要作業隊列?
app.post('/send', function(req, res) {
sendEmailAsync(req.body).catch(console.error)
res.send('ok')
})
這個工程。
我想知道在這裏引入工作隊列的優點是什麼?像Kue
。
說我有一個快遞服務,它發送電子郵件:Node.js是否需要作業隊列?
app.post('/send', function(req, res) {
sendEmailAsync(req.body).catch(console.error)
res.send('ok')
})
這個工程。
我想知道在這裏引入工作隊列的優點是什麼?像Kue
。
基本上,隊列的重點只是讓你更好地控制執行。
這可能是因爲扼殺了你發送的數量,優先考慮其他動作,晚上流出(例如,如果10000同時發送,你不會嘗試發送全部10000同時並殺死你的服務器)。
究竟你使用你的隊列,以及它是否有任何好處取決於你的實際情況和用例。在一天結束時,這只是控制流量。
Node.js是否需要一個作業隊列?
不是一般的。
作業隊列是解決一個特定的問題,通常需要做的事情多於單個node.js進程可以一次處理,因此您可以「排隊」處理事情,甚至可以將它們發送給其他進程來處理。
您甚至可能會針對不同類型的作業設置優先級,或者想要控制作業的執行速度(假設您必須在某個外部服務器上保持低於某個速率限制,或者不想壓倒一切一些其他服務器)。也可以使用nodejs集羣來增加節點服務器可以處理的任務數量。所以,當你有更多的工作要做時,一個隊列就是控制某個CPU或資源密集型任務的執行,而不是你的服務器一次可以輕鬆執行。一個隊列可以讓你控制執行流程。
我沒有看到你展示使用作業隊列的代碼的任何原因,除非你一次做了很多這些。
具體Kue
library你提到的名單及其NPM頁面上這些功能:
所以,我想不言而喻如果你需要一些特定的排隊功能,你會添加一個隊列,如果你的特定問題有最好的功能,你可以使用Kue
庫。
如果它的事項,你的代碼發送res.send("ok")
它與異步任務完成之前,你知道,如果它成功與否之前。有時候有理由這樣做,但有時候你想傳達回去操作是否成功(你不這麼做)。
@ wong2 - 這是否回答了您的問題? – jfriend00