搭建Spring4.1与Spring4.2 websock+stomp+activeMQ需要注意事项:spring4不同版本websocket差异

在将Spring4.2.4的WebSocket应用迁移到Spring4.1.4时遇到错误,原因是Spring4.1.4需要reactor.io.encoding.Codec类,该类在reactor-core-2.0.7.RELEASE中已被移除,而在1.1.6.RELEASE中有。为解决此问题,需要降级到reactor 1.x版本。

上一篇博客我使用的是Spring4.2.4版本搭建的XML风格websocket应用,由于我们项目使用是Spring4.1.4,自然而然地我将下面的依赖加入到我们项目的pom.xml中,结果打出的war包websocket会报错。

<dependency>
	<groupId>io.projectreactor</groupId>
	<artifactId>reactor-net</artifactId>
	<version>2.0.7.RELEASE</version>
</dependency>

<dependency>
	<groupId>io.netty</groupId>
	<artifactId>netty-all</artifactId>
	<version>4.0.33.Final</version>
</dependency>

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.6.4</version>
</dependency>


### 易用性 Java EE WebSocket 是 Java 平台的标准 API(JSR 356),提供了基础的 WebSocket 功能,开发者可以直接使用这些标准接口来创建 WebSocket 端点。对于熟悉 Java EE 环境且仅需要基础 WebSocket 通信功能的开发者来说,使用 Java EE WebSocket 比较直接,无需引入额外的框架。不过,对于复杂的消息处理、路由等功能,需要开发者手动编写大量代码来实现。 Spring WebSocket + STOMP 构建在 Spring 框架之上,提供了丰富的抽象注解,简化了 WebSocket 开发。STOMP(Simple Text Oriented Messaging Protocol)是一个简单的文本消息协议,它为 WebSocket 提供了更高级的消息处理路由功能。通过使用 Spring 的注解,开发者可以轻松地实现消息的订阅、发布等功能,减少了手动编写代码的工作量。例如,使用 `@MessageMapping` 注解可以直接将消息映射到处理方法上: ```java import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.stereotype.Controller; @Controller public class GreetingController { @MessageMapping("/hello") @SendTo("/topic/greetings") public String greeting(String message) { return "Hello, " + message; } } ``` ### 功能特性 Java EE WebSocket 主要专注于实现 WebSocket 协议的基本功能,如建立连接、发送接收消息等。对于消息的处理路由,需要开发者自己实现逻辑,缺乏高级的消息协议支持。 Spring WebSocket + STOMP 则提供了丰富的功能特性。STOMP 协议支持消息的订阅、发布、确认等机制,使得消息的管理更加灵活。Spring 框架还提供了消息代理的支持,如使用 RabbitMQ、ActiveMQ 等作为消息代理,实现分布式消息处理。此外,Spring 还提供了 SockJS 作为 WebSocket 的后备方案,当浏览器不支持 WebSocket 时,会自动降级使用其他协议,提高了兼容性。 ### 开发效率 Java EE WebSocket 由于其基础的 API 特性,在开发简单的 WebSocket 应用时,开发速度可能较快。但对于复杂的应用,如多用户聊天系统、实时数据推送系统等,需要编写大量的代码来处理消息的分发、错误处理等,开发效率会受到影响。 Spring WebSocket + STOMP 凭借其丰富的注解抽象,能够快速实现复杂的 WebSocket 应用。开发者可以专注于业务逻辑的实现,而无需关注底层的消息处理路由细节。同时,Spring 框架的生态系统非常丰富,有大量的工具插件可以使用,进一步提高了开发效率。 ### 学习成本 Java EE WebSocket 基于 Java EE 标准,对于熟悉 Java EE 开发的开发者来说,学习成本相对较低。只需要了解 WebSocket 的基本概念 API 即可开始开发。 Spring WebSocket + STOMP 需要开发者了解 Spring 框架的基本原理使用方法,以及 STOMP 协议的相关知识。对于不熟悉 Spring 框架的开发者来说,学习成本相对较高。但一旦掌握了这些知识,开发效率会得到显著提升。 ### 性能 Java EE WebSocket 的性能取决于具体的实现应用场景。由于其是标准的 API,实现相对简洁,在处理简单的 WebSocket 连接时,性能表现较好。 Spring WebSocket + STOMP 由于引入了 Spring 框架 STOMP 协议,会有一定的性能开销。但 Spring 框架在性能优化方面做了很多工作,并且可以通过配置消息代理等方式来提高性能。在高并发场景下,合理配置 Spring WebSocket + STOMP 可以实现较好的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值