0

我已經編寫了一個基於pheanstalk(beanstalkd)的隊列管理器,並且我正在決定通過此係統進行何種類型的操作。隊列管理器可以發送和讀取3個不同的優先級管道:快速,中等,慢速。用於即時前端反饋操作的隊列系統(單個動作)

優先級的區別在於執行時間。快速隊列中的操作將擁有最多的工作進程,並且應在添加到隊列後幾乎立即執行。中等工人數量會減少,甚至更少。

我們有大量的行動,無疑會通過中等或慢車道的隊列。但是,我們在單個記錄上也有單個操作(由一個到幾個快速查詢組成),用戶需要立即提供反饋。

初始非隊列方法很簡單:

  • 按此做動作,AJAX並等待響應,成功視覺表示。

與隊列的方法是:

  • 阿賈克斯行動,發送到隊列,刷新視覺表現,希望排隊系統完成執行的動作,我們刷新數據

我之前可以增加快速隊列中的工作人員,這樣管中就不會有任何未決動作,但我永遠無法保證在刷新數據之前完成動作。

這個問題有哪些常見的解決方案/模式?我寧願在隊列中運行一切。

回答

0

With Beanstalkd這很簡單 - 它有優先級。越接近0,優先級越高。

給定來自多個管/隊列中的一個的兩個作業,在其他條件相同的情況下,最接近0的優先級將被保留,並首先給出。

大多數工人可以看所有管,他們總是會得到最重要的工作。一個小的子集只能看到fast管,所以總會有最重要的工人可用。如果沒有足夠的「快速」工作,他們會得到中等或緩慢的工作。

我會傾向於設置優先級的工作,可以放入快速隊列中,比如說500,中等:1000,慢到5000.我喜歡留下很大的差距,以知道別的東西可以插入如果需要的話。