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

GatewayWorker 底層和mqtt疑惑

嘿嘿嘿嘿

1、在一個進程使用mqtt:
如果只開一個進程,在進程啟動時訂閱某個消息,如果接收到新消息時,上一條還沒有處理完,是等上一條處理完成再處理下一條,還是會同時處理兩個?
如果等待上一條處理完成之后才處理新的,那么堆積消息的最大數(shù)量是根據(jù)什么來的?或者最大堆積消息為多少條?
?2、GatewayWorker的websocket接收消息處理:
如果出現(xiàn)客戶端延遲高發(fā)來的消息丟包GatewayWorker是如何處理的?
如果出現(xiàn)客戶端延遲高發(fā)來的消息出現(xiàn)一條數(shù)據(jù)分成兩個消息( 如消息{test:ceshi},第一條為{test,第二條為:ceshi}?),這個時候 到Event里是會合并成一條信息還是兩條呢?
?
?

4340 1 0
1個回答

walkor 打賞

1、workerman作為mqtt客戶端,當前消息處理完畢后mqtt服務(wù)端才會下發(fā)下一條消息,所以workerman這邊不會有消息堆積
?
2、tcp數(shù)據(jù)傳輸是由操作系統(tǒng)底層完成的,丟包會重傳,丟包重傳也是由操作系統(tǒng)控制。應(yīng)用層也就是GatewayWorker不用關(guān)心消息丟包,也無法干涉。如果tcp傳輸丟包嚴重,操作系統(tǒng)底層會嘗試重傳多次無果后會斷開連接。
通訊協(xié)議的作用就是用來分包的,通訊協(xié)議會告訴GatewayWorker發(fā)來的tcp數(shù)據(jù)是否是一個完整的數(shù)據(jù)包,如果不是就會等待直到收到一個完整的消息。websocket也是通訊協(xié)議的一種,所以即使tcp傳輸過程中出現(xiàn)分包,GatewayWorker也會根據(jù)websocket協(xié)議收到完整的消息之后才會交給Events.php處理
?

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