消息中间件有哪些常见类型

消息中间件根据其设计理念和用途,可以大致分为以下几种常见类型:

点对点消息队列(Point-to-Point Messaging Queues):

在这种模型中,消息被发送到特定的队列中,消费者从队列中取出并处理消息。队列中的消息只能被一个消费者消费,消费后即被删除。

常见的实现包括IBM的MQSeries、RabbitMQ的部分使用场景等。

适用于任务分发、负载均衡等场景。

发布/订阅消息模型(Pub/Sub Messaging):

在发布/订阅模型中,消息被发布到特定的主题(Topic)上,所有订阅了该主题的消费者都可以接收到这个消息。

消息不会从主题中删除,除非它被设置为持久化且被明确删除,或者消息中间件根据策略自动删除旧消息。

常见的实现有RabbitMQ(通过Exchange实现)、Apache Kafka、Google Cloud Pub/Sub等。

适用于广播消息、事件通知等场景。

消息代理(Brokered Messaging):

消息代理是一种更通用的概念,它涵盖了上述的点对点和发布/订阅模型,以及可能的其他消息传递模式。

消息代理作为消息的存储和转发中心,负责消息的路由、过滤、持久化等功能。

大多数现代消息中间件都可以被视为消息代理,如RabbitMQ、ActiveMQ、Apache Kafka等。

分布式消息队列(Distributed Messaging Queues):

分布式消息队列是为了满足大规模分布式系统的高可用性、可扩展性和容错性需求而设计的。

它们通常将消息存储在多个节点上,支持节点的自动发现和故障转移。

Apache Kafka是一个典型的分布式消息队列系统,它还支持流式处理。

基于日志的消息系统(Log-based Messaging Systems):

这类消息系统使用日志结构来存储消息,提供了极高的吞吐量和可扩展性。

它们通常将消息作为有序的记录追加到日志文件中,并支持高效的读取和复制操作。

Apache Kafka是这一类型的典型代表。

轻量级消息队列(Lightweight Messaging Queues):

轻量级消息队列通常用于较小的系统或微服务架构中,以提供简单的消息传递功能。

它们可能不支持所有高级特性,但具有较小的资源占用和较快的启动速度。

示例包括ZeroMQ、NanoMsg等。

需要注意的是,这些类型并不是严格互斥的,有些消息中间件可能支持多种消息传递模式或结合了多种类型的特点。在选择消息中间件时,需要根据具体的应用场景和需求进行综合考虑。

相关推荐
超级数据查看器17 分钟前
超级数据查看器 v10.0 发布
java·大数据·数据库·sqlite·安卓
折哥的程序人生 · 物流技术专研1 小时前
《Java 100 天进阶之路》第50篇:阻塞队列与并发容器(2026版)
java·面试题·java进阶·blockingqueue·并发容器·集合源码·java100天进阶
ai_coder_ai2 小时前
编写自动化脚本,在自己后端服务中使用Open Api进行设备相关操作
java·运维·自动化
硕风和炜2 小时前
【LeetCode: 2492. 两个城市间路径的最小分数 + DFS】
java·算法·leetcode·深度优先·dfs·bfs·并查集
格子软件2 小时前
2026年GEO贴牌代理:分布式多级分账状态机源码深度解构
java·vue.js·分布式·vue·geo
我是一颗柠檬3 小时前
【Java项目技术亮点】加权轮询负载均衡算法
java·算法·负载均衡
灯厂码农3 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
梦梦代码精4 小时前
电商系统不是技术堆叠:LikeShop如何用分层Hold住复杂业务?
java·docker·代码规范
负责的蛋挞4 小时前
异步HttpModule的实现方式
java·服务器·前端
AC赳赳老秦5 小时前
防火墙规则批量配置实战:OpenClaw 自动生成模板、批量下发与合规性校验全解析
java·开发语言·人工智能·python·github·php·openclaw