Springboot 整合 WebSocket ,使用STOMP协议+Redis 解决负载场景问题

这篇具有很好参考价值的文章主要介绍了Springboot 整合 WebSocket ,使用STOMP协议+Redis 解决负载场景问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ObjectMapper om = new ObjectMapper();

om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);

om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

jacksonSeial.setObjectMapper(om);

template.setValueSerializer(jacksonSeial);

template.setKeySerializer(stringRedisSerializer);

template.setHashKeySerializer(stringRedisSerializer);

template.setHashValueSerializer(jacksonSeial);

template.afterPropertiesSet();

return template;

}

@Bean

RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,

MessageListenerAdapter topicAdapter) {

RedisMessageListenerContainer container = new RedisMessageListenerContainer();

container.setConnectionFactory(connectionFactory);

//订阅了主题 webSocketMsgPush

container.addMessageListener(topicAdapter, new PatternTopic(“webSocketMsgPush”));

return container;

}

/**

  • 消息监听器适配器,绑定消息处理器

  • @return

*/

@Bean

MessageListenerAdapter topicAdapter() {

return new MessageListenerAdapter(new RedisListener());

}

}

简析:

spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis

WebSocketConfig.java :

import org.springframework.context.annotation.Configuration;

import org.springframework.messaging.simp.config.MessageBrokerRegistry;

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;

import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;

import org.springframework.web.socket.config.annotation.WebSocketTransportRegistration;

/**

  • @Author JCccc

  • @Description EnableWebSocketMessageBroker-注解开启STOMP协议来传输基于代理的消息,此时控制器支持使用@MessageMapping

  • @Date 2021/6/30 8:53

*/

@Configuration

@EnableWebSocketMessageBroker

public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

private static long HEART_BEAT = 10000;

@Override

public void configureMessageBroker(MessageBrokerRegistry config) {

ThreadPoolTaskScheduler te = new ThreadPoolTaskScheduler();

te.setPoolSize(1);

te.setThreadNamePrefix(“wss-heartbeat-thread-”);

te.initialize();

config.enableSimpleBroker(“/user”, “/topic”).setHeartbeatValue(new long[]{HEART_BEAT, HEART_BEAT}).setTaskScheduler(te);

}

/**

  • 开放节点

  • @param registry

*/

@Override

public void registerStompEndpoints(StompEndpointRegistry registry) {

//注册两个STOMP的endpoint,分别用于广播和点对点

//广播

registry.addEndpoint(“/publicServer”).withSockJS();

//点对点

registry.addEndpoint(“/privateServer”).withSockJS();

}

@Override

public void configureWebSocketTransport(WebSocketTransportRegistration registration) {

registration.setMessageSizeLimit(500 * 1024 * 1024);

registration.setSendBufferSizeLimit(1024 * 1024 * 1024);

registration.setSendTimeLimit(200000);

}

}

InjectServiceUtil.java :

import com.stomp.stomptest.producer.PushMessage;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**

  • @Author JCccc

  • @Description pushMessage (单例)

  • @Date 2021/6/30 8:53

*/

@Component

public class InjectServiceUtil {

@Autowired

private PushMessage pushMessage;

@PostConstruct

public void init(){

InjectServiceUtil.getInstance().pushMessage = this.pushMessage;

}

/**

  • 实现单例 start

*/

private static class SingletonHolder {

private static final InjectServiceUtil INSTANCE = new InjectServiceUtil();

}

private InjectServiceUtil (){}

public static final InjectServiceUtil getInstance() {

return SingletonHolder.INSTANCE;

}

/**

  • 实现单例 end

*/

public PushMessage pushMessage(){

return InjectServiceUtil.getInstance().pushMessage;

}

}

RedisListener.java :

import org.springframework.data.redis.connection.Message;

import org.springframework.data.redis.connection.MessageListener;

/**

  • @Author JCccc

  • @Description redis监听消息

  • @Date 2021/6/30 8:53

*/

public class RedisListener implements MessageListener {

@Override

public void onMessage(Message message, byte[] bytes) {

System.out.println(“步骤1.监听到需要进行负载转发的消息:” + message.toString());

InjectServiceUtil.getInstance().pushMessage().send(message.toString());

}

}

简析:

spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis

Message.java :

/**

  • @Author JCccc

  • @Description

  • @Date 2021/8/20 9:26

*/

public class Message {

/**

  • 消息编码

*/

private String code;

/**

  • 来自(保证唯一)

*/

private String form;

/**

  • 去自(保证唯一)

*/

private String to;

/**

  • 内容

*/

private String content;

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getForm() {

return form;

}

public void setForm(String form) {

this.form = form;

}

public String getTo() {

return to;

}

public void setTo(String to) {

this.to = to;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

}

PushMessage.java  :

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis
spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis
spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis
spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis
spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis
spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注前端获取(资料价值较高,非无偿)
spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis

最后

编程基础的初级开发者,计算机科学专业的学生,以及平时没怎么利用过数据结构与算法的开发人员希望复习这些概念为下次技术面试做准备。或者想学习一些计算机科学的基本概念,以优化代码,提高编程技能。这份笔记都是可以作为参考的。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis文章来源地址https://www.toymoban.com/news/detail-850831.html

mg-MGh00wjE-1711581558491)]

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V:vip1024c 备注前端获取(资料价值较高,非无偿)
[外链图片转存中…(img-N3SLTraN-1711581558491)]

最后

编程基础的初级开发者,计算机科学专业的学生,以及平时没怎么利用过数据结构与算法的开发人员希望复习这些概念为下次技术面试做准备。或者想学习一些计算机科学的基本概念,以优化代码,提高编程技能。这份笔记都是可以作为参考的。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

spring boot websocket redis,2024年程序员学习,spring boot,websocket,redis

到了这里,关于Springboot 整合 WebSocket ,使用STOMP协议+Redis 解决负载场景问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HTTP、WebSocket、STOMP、MQTT 协议

    TCP/IP 是用于因特网 (Internet) 的通信协议,是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。 TCP/IP是基于TCP和IP这两个最初的协议之上的不同的通信协议的大集合,是一个协议族。 1-1、TCP(传输控制协议,Transmission Control Protocol) 在计算机网

    2024年04月15日
    浏览(38)
  • SpringBoot + WebSocket+STOMP指定推送消息

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 本文将简单的描述SpringBoot + WebSocket+STOMP指定推送消息场景,不包含信息安全加密等,请勿用在生产环境。 JDK:11+ Maven: 3.5+ SpringBoot: 2.6+ stompjs@7.0.0 STOMP 是面向简

    2024年02月14日
    浏览(35)
  • SpringBoot项目整合WebSocket+netty实现前后端双向通信(同时支持前端webSocket和socket协议哦)

    目录   前言 技术栈 功能展示 一、springboot项目添加netty依赖 二、netty服务端 三、netty客户端 四、测试 五、代码仓库地址   专属小彩蛋:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站(前言 - 床长人工智能教程

    2024年02月12日
    浏览(38)
  • uni-app + SpringBoot +stomp 支持websocket 打包app

    websocket 协议是在http 协议的基础上的升级,通过一次http 请求建立长连接,转而变为TCP 的全双工通信;而http 协议是一问一答的请求方式方式。 websocket-uni.js

    2024年02月11日
    浏览(34)
  • 基于STOMP协议的WebSocket消息代理和相关的安全握手处理器以及消息拦截器

    这段代码是一个Spring配置类 WsChatConfig ,基于STOMP协议的WebSocket消息代理和相关的安全握手处理器以及消息拦截器。这个类通过实现 WebSocketMessageBrokerConfigurer 接口来定义WebSocket通信的路由、安全握手以及消息拦截的逻辑。 核心方法详解 configureMessageBroker(MessageBrokerRegistry confi

    2024年04月26日
    浏览(39)
  • SpringBoot整合Websocket(Java websocket怎么使用)

    WebSocket 是一种基于 TCP 协议的全双工通信协议,可以在浏览器和服务器之间建立 实时、双向的数据通信 。可以用于在线聊天、在线游戏、实时数据展示等场景。与传统的 HTTP 协议不同,WebSocket 可以保持 长连接 ,实时传输数据,避免了频繁的 HTTP 请求和响应,节省了网络带

    2024年02月10日
    浏览(29)
  • WebSocket(三) -- 使用websocket+stomp实现群聊功能

    SpringBoot+websocket的实现其实不难,你可以使用原生的实现,也就是websocket本身的OnOpen、OnClosed等等这样的注解来实现,以及对WebSocketHandler的实现,类似于netty的那种使用方式,而且原生的还提供了对websocket的监听,服务端能更好的控制及统计(即上文实现的方式)。 但是,真

    2023年04月08日
    浏览(29)
  • java中使用sockjs、stomp完成websocket通信

    主要配置 握手拦截(这套方案好像前端无法补充Header,就不在这里做权限校验)这里采用的方法是直接问号拼接token,前端 new SockJS(这里带问号),sockjs使用的是http所以没毛病,本文使用的是OAuth2权限校验 之后可以设置握手之后的身份注入(配置了这个可以在单对单订阅时直接使用) 储

    2024年02月10日
    浏览(25)
  • 微信小程序使用stomp.js实现STOMP传输协议的实时聊天

    简介: stomp.js:uniapp开发的小程序中使用 stomp.js:官网 stomp.js:GitHub 本来使用websocket,后端同事使用了stomp协议,导致前端也需要对应修改。 如何使用 在static/js中新建stomp.js和websocket.js,然后在需要使用的页面引入监听代码+发送代码即可 代码如下: 位置:项目/pages/static/

    2024年02月11日
    浏览(43)
  • uniapp微信小程序使用stomp.js实现STOMP传输协议的实时聊天

    简介: stomp.js:原生微信小程序中使用 stomp.js:官网 stomp.js:GitHub 本来使用websocket,后端同事使用了stomp协议,导致前端也需要对应修改。 如何使用 1.yarn add stompjs 2.版本 “stompjs”: “^2.3.3” 3.在static/js中新建websocket.js,然后在需要使用的页面引入监听代码+发送代码即可 代

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包