国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman 的 redis 隊列在多機部署時,多機同時消費問題

ToogleLiu

一個 webman 項目,用到了 redis 隊列,該項目部署到 A 和 B 兩臺服務器,這樣的話,A 和 B 都會同時消費隊列吧?假如從隊列 pop 后要寫入 MySQL,那可能寫入庫的順序就不是入隊的順序了。如果有嚴格的消費順序要求,多機部署 webman 項目時,怎么保證消費的順序正確呢?可以設置只在其中一臺服務器上消費嗎?
謝謝~

3934 4 0
4個回答

ToogleLiu

workerman/crontab 也是,也會在多機都執(zhí)行吧。

  • 暫無評論
ToogleLiu

Laravel 的任務調(diào)度有限制只在一臺服務器執(zhí)行的方法:
https://learnku.com/docs/laravel/8.x/scheduling/9399#d9201c

  • 暫無評論
walkor 打賞

webman只能保證按順序從隊列里取數(shù)據(jù),至于業(yè)務消費后插入數(shù)據(jù)庫的時機,這完全是由你們業(yè)務代碼控制的,webman沒辦法控制。

即使只用一臺服務器消費,多個消費進程也是并發(fā)執(zhí)行的,和多服務器沒有實質(zhì)區(qū)別。除非你單機單進程消費,那么入庫肯定是嚴格按照消費順序來的。

我覺得最好的方案就是業(yè)務自己做下處理,比如每個消息都帶一個序列號,入庫的時候按照序列號入庫,查詢的時候按照序列號排序查詢?;蛘吒鶕?jù)你的業(yè)務找一個其它方案。

evilk

這種,冥等性問題,都應該在業(yè)務層自行處理

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??