WebSocket整合SpringBoot、SockJS、Stomp、Rabbitmq分布式消息推送

RocChenKing 2023-01-12 23:12:13

课程名称适应人群
WebSocket整合SpringBoot、SockJS、Stomp、Rabbitmq分布式消息推送java开发人员,架构师,前端开发人员

1HTML5 WebSocket、异常重连、心跳检测;

2SockJSStompRabbitMQ Stomp消息代理;

3)分别用NginxSpring Cloud Gateway实现多实例负载均衡;

4)可靠消息推送(Stomp持久化队列、客户端ACK确认机制);

5Java原生、Stomp客户端实现(非浏览器客户端);

6Websocket拦截器结合 Spring securityjwt token认证授权;

(7)Vue前端版本实现、Java客户端实现;

(8)消防物联网平台消息推送案例,需求分析、设计思路、编码实现、效果演示。

...全文
7377 56 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
56 条回复
切换为时间正序
请发表友善的回复…
发表回复
RocChenKing 2023-08-23
  • 打赏
  • 举报
回复

已添加Vue前端版本实现。

RocChenKing 2023-08-22
  • 打赏
  • 举报
回复

不建议使用太低的版本。

  • 打赏
  • 举报
回复
老师 我们的项目用的版本是 1.5.9.RELEASE, 集成启动的时候报这个错,有解决方法吗 Caused by: java.lang.NoClassDefFoundError: reactor/core/support/Recyclable at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) at java.net.URLClassLoader.access$100(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:368) at java.net.URLClassLoader$1.run(URLClassLoader.java:362) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:361) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.security.SecureClassLoader.defineC
潜水丁香 2022-05-15
  • 打赏
  • 举报
回复
可以使用 Kafka 替换来 RabbitMQ 的stomp插件
RocChenKing 2022-05-23
  • 举报
回复
@潜水丁香 <p>看看新版本是不是支持,老版本不可以,需要Kafka支持Stomp服务端协议,最好的还是rabbitmq.</p>
潜水丁香 2022-05-15
  • 打赏
  • 举报
回复
SimpUserRegistry DefaultSimpUserRegistry 能简单介绍一下吗?
RocChenKing 2022-05-23
  • 举报
回复
@潜水丁香 <p>Registry一般表示在某个环节要注入一个自定义实现类,比喻认证环节有很多流程需要自己的逻辑控制,就可以注入进去,类的具体方法可以直接跳到类中查看。</p>
weixin_38941788 2022-05-06
  • 打赏
  • 举报
回复
大佬,订阅能成功也能收到消息,但是rabbitmq Connections 增长的很快,达到 300个连接是怎么回事?
RocChenKing 2022-05-11
  • 举报
回复
@weixin_38941788 <p>rabbitmq Connections 应该没有那么多,一个connections会可以有多个队列连接,检查一下连接的来源。</p>
程序员济癫 2022-04-03
  • 打赏
  • 举报
回复
我试了下,springboot2.4.0版本开始引入sockjs都不行,都会报Main site uses: "1.1.4", the iframe: "1.0.0".这样的错误,把sockjs版本调高也不行,试了很多遍,只有springboot2.4.0以下的版本都可以。 老师有试过没,我看老师的是2.2.2.RELEASE版本,刚好没问题,可是以后项目版本肯定会越来越高,还如何整合sockjs和stomp呢?
RocChenKing 2022-04-16
  • 举报
回复
@程序员济癫 <p>目前主流生产环境中使用2.2.x还是比较新的,新的版本需要同步做好升级,目前没有使用过,不能确定。</p>
程序员济癫 2022-04-03
  • 打赏
  • 举报
回复
想知道该如何监控用户连接和断开的情况呢? 原生的websocket是可以实现HandshakeHandler来监听连接、断开、接收文本消息的,使用stomp的话该怎么做呢? 网上找了很多资料都没找到。
RocChenKing 2022-04-16
  • 举报
回复
@程序员济癫 <p>可以命名用过滤器来实现,对于任何操作,本质上是一条stomp消息帧,帖有类型,可以在过滤器中捕获到。</p>
ajj999999 2021-11-30
  • 打赏
  • 举报
回复
老师,github 404 的地址没有了??? 已经购买课程, 求视频和github 新地址, 邮箱:2935810117@qq.com 谢谢。
RocChenKing 2021-12-04
  • 举报
回复
@ajj999999 <p>github访问较慢,用这个地址下载:<a href="https://gitee.com/cpaqyx/websocket">https://gitee.com/cpaqyx/websocket<;/a> </p>
「已注销」 2021-09-15
  • 打赏
  • 举报
回复
使用/queue/xxx,假如多人订阅的话,无法被多人消费,只能被一个人消费,是吧?
RocChenKing 2021-12-04
  • 举报
回复
@「已注销」 <p>是的,按你的需求来使用特定的前缀。</p>
「已注销」 2021-09-05
  • 打赏
  • 举报
回复
websocket异常重连,重连倒是连上了,但是没有再触发订阅(connectCallback方法),老是可以帮忙看下吗?微信:LOST9038
RocChenKing 2021-09-05
  • 举报
回复
@「已注销」 <p>好的,感谢你提出的问题,我先在本地测试一下,另外刚更新了STOMP协议、STOMP Over Websocket深入理解两个课时,可以详细查看一下。</p>
无影代码刀 2021-08-12
  • 打赏
  • 举报
回复
老师,这种情况下rabbitmq可以做集群吗?但是gistry.enableStompBrokerRelay 中的setRelayHost(ip) 只能填写一个ip ,不能写failover 链接集群
无影代码刀 2021-08-12
  • 打赏
  • 举报
回复
老师您好 ,这个方案是否有做过性能测试,我现在按照你的方式实现了一个聊天室, 但是遇到了性能瓶颈 rabbitmq 或者换成activemq 无法实现集群,因为registry.enableStompBrokerRelay 中的setRelayHost(ip) 只能填写一个ip ,不能写failover 链接集群。 这里应该怎么提高性能?
无影代码刀 2021-08-11
  • 打赏
  • 举报
回复
老师您好。我想请教您一个关于springboot stomp rabbitmq结合后的性能问题 我现在按照你的课程下来做了一套聊天的,但是当广播达到400左右人数的时候,消息就会大量延迟。请问有什么好的优化性能的方法?
RocChenKing 2021-08-15
  • 举报
回复
@无影代码刀 <p>建议:(1)websocket实现和rabbitmq采用多实例部署;(2)心跳检测配置时间长一些;(3)监控一下CPU、带宽参数,看看是不是这些原因造成的。</p>
Ryan_zhanggs 2021-06-29
  • 打赏
  • 举报
回复
老师,同一个用户,不同浏览器登录两个实例,消息会轮流收到,这个问题怎么解决呢?
Ryan_zhanggs 2021-06-24
  • 打赏
  • 举报
回复
HandshakeInterceptor的beforeHandshake方法 ,我返回 false之后会导致握手请求一直重复提交请求,怎么设置不重复握手呢?
Ryan_zhanggs 2021-06-22
  • 打赏
  • 举报
回复
老师您好,HandshakeInterceptor 的beforeHandshake方法中,鉴权失败我返回false,结果会一直重复握手请求导致服务器压力很大,请问怎么设置不重复握手请求呢?
RocChenKing 2021-08-15
  • 举报
回复
@Ryan_zhanggs <p>不好意思,才看到,可以在客户端控制一下,如果收到异常,直接不连接。</p>
xuming2860 2021-05-19
  • 打赏
  • 举报
回复
老师您好,我想请教您几个问题, 1.vue单页面项目的话可以做全局连接,局部订阅吗,比如我的项目中有很多功能需要实时推送日志,然后展现。如果每个页面都重新连接的话,会连接数过多导致前端nginx无法反向代理。 2.rabbitmq可以使用kafka代替吗,目前项目中是已经整合了kafka的 3.看上面的项目流程图,是后台业务与消息推送服务分开的。推荐这么做,然后后端如果要发送消息给前端的话,就要请求消息推送服务项目中的端口,然后推送过去,实现两者分离吗
RocChenKing 2021-08-15
  • 举报
回复
@xuming2860 <p> 1.vue单页面项目的话可以做全局连接,统一接收数据,传递到其他模块即可;</p> <p>2.rabbitmq不可以使用kafka代替,因为rabbitmq实现的stomp服务端协议,而kafka不支持;</p> <p>3.建议独立做成websocket推送服务,其他模块来调用,实现共享和统一管理。</p> <p> </p>
嗖一下 2021-03-15
  • 打赏
  • 举报
回复
stomp怎么管理session 有没有不集成mq的呀
RocChenKing 2021-03-17
  • 举报
回复
@嗖一下 通过拦截器管理,请看截图介绍章节部分,不集成mq也可以,使用的是内存,不支持负载均衡。
嗖一下 2021-03-15
  • 打赏
  • 举报
回复
github地址公布一下
RocChenKing 2021-03-17
  • 举报
回复
@嗖一下 请通过课程中下载章节中查看下载地址和方法
加载更多回复(11)

1

社区成员

发帖
与我相关
我的任务
社区描述
学习是没有止境的,总喜欢平时思考些什么,技术、表达、管理能力的提高在于平时的积累和小小细节的超越,这里也记录着我的一些小小成就和超越,让我们一起卓越!
社区管理员
  • RocChenKing
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧