2016-12-23 31 views
0

我已經爲Web套接字提供了Spring引導應用程序。我沒有使用Stomp Web套接字。 我們可以通過多個微服務實例共享Web套接字會話嗎?在Spring Micro服務之間共享Websocket會話

有沒有一種方法可以在Redis或cassandra中保存websocket會話?我使用的情況是,我的微服務正在運行,它正在監聽一個kafka隊列,所以當收到一條消息時,我需要使用web套接字會話將它發送到客戶端。我正在運行多個實例將會話作爲MAP保存在微服務中。我的問題是我的任何一個微服務正在收到消息,如果該會話不適用於該微服務,則消息不會發送給客戶端。

如果我能夠在REDIS或Cassandra中保存websocket sesssion,我可以查詢會話併發送給客戶端。

我不能根據需要使用Stomp web套接字,它必須是普通的websocket。

回答

1

你不能。你必須實現某種從收到kafka消息的路由到你的微服務。 一個簡單的方法就是在任何數據存儲(mongo,redis等)中存儲給定客戶端的服務實例的IP地址。通過這種方式,當你從kafka得到消息時,你知道它是誰,你查找哪臺機器爲該客戶端提供websocket會話。然後你調用你實現的那個IP上的一些http端點來中繼正在處理的會話的消息。