1.首先客戶端連線,連線之後會傳送discover訊息型別,訊息是傳送給nats server(不是nats streaming server)。
這裡會返回得到nats streaming server所有訊息型別的物件(pub,sub,unsub,subclose等),客戶端傳送訊息就是傳送到對應object物件。這些物件是由nats streaming server傳送給nats server儲存的,具體傳送如下,
2.發布訊息,根據上一步得到的訊息型別物件,發布pub訊息(變數pubprefix),nats收到訊息後查詢接收佇列,發現只有nats streaming server訂閱了此訊息,隨即**給nats streaming server。
3.nats streaming server發布訊息處理,主要是在ioloop函式,監聽s.iochannel通道,訊息到來會通過這個通道傳送,然後呼叫storeiopendingmsgs函式查詢對應的監聽通道,通道裡儲存了客戶端發布訂閱時儲存的訂閱物件列表channel.substore.psubs,儲存了每個訂閱物件的物件型別,**給nats server,最終到達訂閱客戶端。
注:這裡最重要的就是nats streaming server定義了乙個全域性訊息型別在nats server,所有的客戶端傳送訊息是發給這個全域性物件,nats streaming server收到訊息後在根據具體訂閱物件分發乙個完整流程:
nats streaming client->nats server->nats streaming server->nats server->nats streaming client。
nats streaming簡介與初始化
nats是乙個開源 輕量級 高效能的分布式訊息中介軟體,實現了高可伸縮性和優雅的publish subscribe模型,但他不保證訊息的到達,永續性等特性,nats streaming即為解決這一問題,附一張官方兩者架構圖。啟動過程 1.parseflags啟動引數的處理 2.runserverwi...
訊息和訊息處理之訊息迴圈
在win32程式設計中,訊息迴圈是相當重要的乙個概念,看似很難,但使用起來卻是非常簡單。在winmain函式的最後,有下列 while getmessage msg,null,0,0 windows應用程式可以接收以各種形式輸入的資訊,這包括鍵盤 滑鼠動作 計時器產生的訊息,也可以是其他應用程式發來...
訊息和訊息佇列
在傳統的c 程式當中,我們呼叫 fopen 函式開啟檔案,這個庫函式最終呼叫作業系統 提供的函式 來開啟檔案。而在 windows 中,不僅使用者程式可以呼叫系統的 api函式,反回來,系統也會呼叫使用者程式,這個呼叫是通過訊息來進行的。windows程式設計是一種完全不同於傳統的 dos方式的程式...