J2EE开发中消息中间件的介绍和选择

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: J2EE开发中消息中间件的介绍和选择

近几年来,消息中间件发展迅速,导致在业务开发中可能不需要也要使用一下,一方面是为了学习和熟悉一种消息中间件技术为自己后续的职业生涯增添一份溢彩,另一方面可以让自己的业务系统得到架构层面上的扩充,有时候有益于系统架构,有时候可能会适得其反,没有起到明显的效果,反而会导致后续的运维变得很复杂,增加排查问题的复杂度。

面试了一些求职者,简历上罗列了不少中间件技术,有的写一种,有的写好几种,也能说出一些具体在哪个业务环节使用到。但是从业务系统的性质上去判断,总感觉大多数为了使用去使用,有的时候就是杀鸡焉用牛刀的感觉。下面列举一些开源的大家使用比较多的消息中间件做一介绍。

一、Apache RocketMQ

厂家:阿里出品,现在属于Apache基金会

简介:一个开源的分布式消息队列系统,具有低延迟、高可用性和可伸缩性

特点:高吞吐量的消息传递、分布式系统的异步通信、顺序消息处理

消息机制:通过持久化消息、消息确认和消费进度管理来确保消息的可靠性和至少一次消费。消息可以被持久化到磁盘,并且消费者可以发送消息确认。RocketMQ 会记录消费者的消费进度,并在发生故障后重新投递未确认的消息。

优点:低延迟、高可用性和可伸缩性,支持分布式部署和大规模消息传递。

缺点:相对较复杂,需要额外的配置和管理。

二、RabbitMQ

厂家:Rabbit Technologies Ltd

简介:一个开源的、高度可靠的消息代理和队列系统,支持多种消息协议。

特点:一个基于Java的开源消息中间件,支持多种传输协议和消息模式

消息机制:通过持久化消息和消息确认机制来确保消息的可靠性。消息可以被持久化到磁盘,以防止在发生故障时丢失。消费者可以发送消息确认(acknowledgment),告知 RabbitMQ 消息已经被正确处理。如果消费者在处理消息后发生故障,RabbitMQ 可以将未确认的消息重新投递给其他消费者。

优点:可靠性高,支持多种消息协议,具有灵活的路由和消息确认机制。

缺点:性能相对较低,特别是在高负载情况下。

三、Apache ActiveMQ

厂家:Apache 软件基金会

简介:一个基于Java的开源消息中间件,支持多种传输协议和消息模式。

特点:需要广泛的消息协议支持、企业应用程序集成、点对点和发布/订阅模式的消息通信

消息机制:通过持久化消息和事务机制来保证消息的可靠性。消息可以被持久化到数据库或文件系统,以防止消息丢失。消费者可以使用事务机制,确保消息在处理后被确认。如果消费者在处理消息后发生故障,ActiveMQ 可以将未确认的消息重新传递给其他消费者。

优点:支持多种传输协议和消息模式,具有良好的可靠性和可用性。

缺点:性能可能受到限制,特别是在高负载情况下。

四、Apache Kafka

厂家:Apache 软件基金会

简介:一个分布式流处理平台,可以处理高吞吐量的实时数据流。

特点:高吞吐量的实时数据流处理、日志收集和分析、构建实时流式处理应用程序

消息机制:使用持久化的日志存储来保证消息的可靠性。消息被写入磁盘中的日志,确保在发生故障时不会丢失。消费者可以根据偏移量(offset)消费消息,Kafka 会追踪每个消费者的偏移量,并在发生故障后重新提供未消费的消息。

优点:具有高吞吐量和低延迟的特性,适用于实时数据流处理,具有良好的可伸缩性和持久性。

缺点:相对较复杂,需要额外的配置和管理。

五、Redis

厂家: Redis Labs

简介:一个高性能的键值存储系统,同时也可以作为消息队列使用。

特点:快速的消息传递和响应、轻量级的发布/订阅模式、简单的消息队列需求

消息机制:作为键值存储系统,并不提供内置的消息持久化机制。但可以通过使用 Redis 的持久化功能来实现消息的持久化。为了确保至少一次消费,消费者可以使用 Redis 的事务机制进行消息确认,并使用 Redis 的原子操作来处理消费逻辑。

优点:高性能的键值存储系统,可以作为消息队列使用,具有低延迟和高吞吐量。

     缺点:消息持久性相对较低,不适合需要可靠性保证的场景。

此外还有很多其他的厂家的产品,比如Apache Pulsar、IBM MQ等等,还有基于物联网低延时通讯协议MQTT开发的相关消息产品,个人感觉还是根据业务场景,团队学习成本,后期运维成本等诸多因素去选择吧,入门使用门槛不是很高,无非就是一些api的使用,主要是后期运维,问题排查需要有个技术支撑,否则出问题了,再去学习可能就影响到客户满意度了。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
7月前
|
自然语言处理 中间件 编译器
C语言的编译器和中间件开发
C语言的编译器和中间件开发
|
7月前
|
缓存 中间件 PHP
【PHP开发专栏】PHP框架中的路由与中间件
【4月更文挑战第29天】本文探讨了PHP框架中的路由和中间件概念。路由负责将HTTP请求映射到控制器方法,提供灵活的请求处理和URL管理。中间件则是在请求处理前后插入的代码,用于实现如身份验证、日志等功能,与业务逻辑解耦。通过Laravel框架的示例展示了如何定义路由和创建中间件,以实现代码的模块化和可维护性。
90 0
|
7月前
|
缓存 中间件 Python
Python Web 开发: 解释 Django 中的中间件是什么,以及如何使用?
Python Web 开发: 解释 Django 中的中间件是什么,以及如何使用?
101 0
|
Java 中间件 API
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)
402 16
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)
|
开发框架 Java 中间件
java程序设计与j2ee中间件技术/软件开发技术(I)-实验三-接口、开闭原则和异常
java程序设计与j2ee中间件技术/软件开发技术(I)-实验三-接口、开闭原则和异常
233 3
java程序设计与j2ee中间件技术/软件开发技术(I)-实验三-接口、开闭原则和异常
|
开发框架 前端开发 JavaScript
java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示(一)
java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示
362 6
java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示(一)
|
Web App开发 开发框架 Java
java程序设计与j2ee中间件技术/软件开发技术(III)-实验四-编写简单的jsp页面
java程序设计与j2ee中间件技术/软件开发技术(III)-实验四-编写简单的jsp页面
194 3
java程序设计与j2ee中间件技术/软件开发技术(III)-实验四-编写简单的jsp页面
|
存储 缓存 JSON
一个C#开发的非常实用的缓存中间件
*这是一个用C#开发的.Net开源的缓存中间件,他支持各种缓存并提供了很多高级功能。它的主要目标是让开发人员开发更简单、特别是一些复杂的缓存场景。
234 10
一个C#开发的非常实用的缓存中间件
|
开发框架 Java 中间件
java程序设计与j2ee中间件技术/软件开发技术(I)-实验二-类与对象
java程序设计与j2ee中间件技术/软件开发技术(I)-实验二-类与对象
150 2
java程序设计与j2ee中间件技术/软件开发技术(I)-实验二-类与对象
|
开发框架 Java 中间件
java程序设计与j2ee中间件技术/软件开发技术(I)-实验一-你好世界
java程序设计与j2ee中间件技术/软件开发技术(I)-实验一-你好世界
195 3
java程序设计与j2ee中间件技术/软件开发技术(I)-实验一-你好世界
下一篇
DataWorks