获取服务器IP和端口可以具体查看Github源码,这里就不做详细描述了 。修改服务端点 ServerEndpoint在
WebSocket
添加消息的接收方法 , @RabbitListener
接收消息,队列名称使用常量命名,动态队列名称使用 #{name}
,其中的name
是Queue
的bean
名称:@RabbitListener(queues= "#{psQueue.name}")public void pubsubQueueFirst(String message) {System.out.println(message);sendMessage(message);}
然后再调用sendMessage
方法发送给所在连接的客户端 。修改消息发送在
WebSocket
类的onMessage
方法将消息发送改成RabbitMQ
方式发送:@OnMessagepublic void onMessage(String message){if (!message.equals("ping")){log.info("【wesocket】收到客户端发送的消息,message={}",message);//sendMessage(message);if (rabbitTemplate == null) {rabbitTemplate = (RabbitTemplate) SpringContextUtil.getBean("rabbitTemplate");}rabbitTemplate.convertAndSend("PUBLISH_SUBSCRIBE_EXCHANGE", null, message);}}
消息通知流程如下所示:文章插图
启动两个实例,模拟集群环境打开idea的
Edit Configurations
:文章插图
点击左上角的COPY,然后添加端口
server.port=8081
:文章插图
启动两个服务 , 端口分别是
8080
和8081
。在启动8081
端口的服务,将前端连接端口改成8081
:var ws = new WebSocket("ws://127.0.0.1:8081/message");
效果展示文章插图
源码github源码
参考
- Spring Websocket in a tomcat cluster
- WebSocket 集群方案
推荐阅读
- 从0到1搭建redis6.0.7
- 京东云开发者|mysql基于binlake同步ES积压解决方案
- 关于ASP.NET Core WebSocket实现集群的思考
- 京东云开发者|IoT运维 - 如何部署一套高可用K8S集群
- 十六 企业级自定义表单引擎解决方案--Excel导入导出
- 一台虚拟机,基于docker搭建大数据HDP集群
- 5 why 分析法,一种用于归纳抽象出解决方案的好方法
- 【多服务场景化解决方案】AR虚拟技术助力智能家装
- 二 Istio:在Kubernetes(k8s)集群上安装部署istio1.14
- three.js webgl3D光伏,3D太阳能能源,3D智慧光伏、光伏发电、清洁能源三维可视化解决方案——第十六课