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

GatewayWorker消息是按順序處理的嗎,是php代碼邏輯完成再處理下一條這種嗎?

cnrae

比如業(yè)務(wù)處理使用一個統(tǒng)一的class(class是在onWorkerStart創(chuàng)建的,共用)
一條消息來了,給class設(shè)置data,然后再執(zhí)行class的邏輯

如果不是按順序,那會出現(xiàn),前一個消息設(shè)置了data但邏輯還沒跑完,后一個消息來了后更改data導致前面一條數(shù)據(jù)異常

或者不同進程存在此問題,同一進程沒問題?

大神求解

3127 1 0
1個回答

maq

一個 Worker 是一個進程。

當你的 BusinessWorker 接收到一個消息之后,只要是同步代碼一直在執(zhí)行,就不會被另一個消息的到來所打擾,直到你的 Events::onMessage 返回之后,當前的 Worker 就準備接收下一個消息了。

所以問題的關(guān)鍵在于你處理一個消息的 PHP 程序是不是完全同步執(zhí)行的。如果你用到了定時器或者異步組件(react/mysql 或者 react/redis 之類),那就不好說了,很可能異步操作還沒有執(zhí)行完,下一個消息就到來并開始處理了。

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