我正在設計一個基於Java Spring的實時通知系統&使用Redis的聊天系統& WebSockets(帶有sockJS和STOMP)。要求是爲每個用戶訂閱一個唯一的頻道(頻道名稱將是用戶ID)。這是因爲通知可以針對單個用戶,聊天對話可以是1對1。使用redis的im的原因是爲了獲得用戶通過WebSocket連接的相應應用程序服務器(有很多)觸發的事件。據我瞭解,當發生公佈說「USER1」 - 如果我想要得到的「的onMessage處理程序」解僱只是目標用戶:Redis - 最大訂閱數/連接數?
- 我需要保持每用戶1個Redis的連接?
- 可以一次打開15k個連接,並且可以同時連接到系統的許多用戶使用15k獨特訂閱嗎?
系統如何知道用戶連接哪個應用程序服務器知道用戶有新消息或者您正在詢問什麼? – goblinjuice
系統知道,因爲Redis將在用戶連接到的相應應用程序服務器中觸發事件處理程序。假設用戶-a連接到appserver-a,用戶-b連接到appserver-b。當我向兩個用戶訂閱的頻道發佈消息時,redis將在兩個應用服務器中觸發事件,並且在事件處理程序中,我有代碼通過用戶連接的websocket將消息發送給用戶。 – user1220169
我的問題是這樣的。在用戶-a訂閱channel-a和user-b到channel-b並且他們兩個都連接到同一個應用服務器的情況下 - 我需要爲每個用戶分配兩個到redis的連接。因此,當我向user-a發佈消息時,事件僅在連接時觸發 - a用戶a的eventHanler正在偵聽,而user-b由於他/她通過完全獨立的連接進行連接,因此未收到此消息。我需要知道這是否是一個好方法。 – user1220169