websocket会话示例不集群.. spring-session-1.2.2

时间:2016-11-04 18:05:40

标签: java spring-data spring-websocket spring-session

我正在测试spring会话websocket示例的聚类。

我按照文档http://docs.spring.io/spring-session/docs/current/reference/html5/guides/websocket.html中的说明运行示例。代码来自:https://github.com/spring-projects/spring-session/archive/1.2.2.RELEASE.zip

如果我在一台Tomcat服务器上运行该应用程序,则所有工作都按预期工作。但如果我在两台服务器上运行两个应用程序,则无效。

我在8080和8090的两台Tomcat服务器上启动应用程序并登录到每台服务器。 8080按预期出现。 8090按预期出现并列出8080的用户名。但8090的用户名永远不会添加到8080的列表中。

如果我刷新8090的网页,则用户将从列表中删除,8090的用户将被添加到8080的列表中。这个循环将继续使用这两个应用程序。

春季会议似乎正在分享会话信息。我在Redis中看到两个登录条目。

我是否希望此示例在多个服务器上运行?

提前感谢。

1 个答案:

答案 0 :(得分:0)

我假设您已经配置了一个stomp代理中继,并且您使用了AbstractSessionWebSocketMessageBrokerConfigurer类来配置具有spring会话的WebSocket。 之后,群集仍然无效,因为默认发布机制使用本地sessionsRepository来解析用户的套接字ID。我们不想要这种机制。我们需要使用远程存储库。 removeRepository已存在于sprint中。要激活它,您只需配置MessageBrokerRegistry:

registry.enableStompBrokerRelay("/topic/", "/queue/", "/exchange/") .setUserDestinationBroadcast("/topic/logbook-unresolved-user") .setUserRegistryBroadcast("/topic/logbook-user-registry")

对我来说很好。我希望它会有所帮助。