在Spring Micro Service之间共享Websocket会话

时间:2016-12-23 16:34:24

标签: spring-boot websocket spring-websocket spring-session

我是一个用于Web套接字的Spring启动应用程序。我没有使用Stomp Web套接字。 我们是否可以在多个微服务实例之间共享Web套接字会话。

有没有办法可以在Redis或cassandra中保存websocket会话?

我的用例是,我的微服务的多个实例正在运行,正在侦听kafka队列,因此当收到消息时,我需要使用Web套接字会话将其发送到客户端.I&# 39; m将会话保存在微服务中作为MAP。我的问题是我的微服务中的任何一个都收到了消息,如果该微服务的会话不可用,则该消息不会发送给客户端。

如果我能够在REDIS或Cassandra中保存websocket sesssion,我可以查询会话并发送给客户。

我不能按照要求使用Stomp网络套接字,它必须是普通的websocket。

1 个答案:

答案 0 :(得分:2)

你做不到。您必须实现从接收kafka消息的任何路由到您的微服务的某种路由。 一种简单的方法是在任何数据存储区(mongo,redis等)中存储给定客户端的服务实例的IP。这样,当您从kafka获得消息时,您知道它是谁,您查找哪台机器具有该客户端的websocket会话。然后,在您实现的IP上调用一些http端点,以便为其正在处理的会话中继消息。