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

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

cnrae

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

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

或者不同進(jìn)程存在此問(wèn)題,同一進(jìn)程沒(méi)問(wèn)題?

大神求解

3093 1 0
1個(gè)回答

maq

一個(gè) Worker 是一個(gè)進(jìn)程。

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

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

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??