当前位置: 首页 > news >正文

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

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

 

 

点对点消息队列(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等。

 

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis实现发布/订阅功能(实战篇)
  • 高度可定制的电竞鼠标,雷柏VT1 PRO MAX体验
  • docker拉取 jdk 8
  • 八股文知识汇总(常考)
  • 架构师备考的一些思考(四)
  • 【Hue导入Hive文件类型数据(自动建表)】
  • 网站如何防范BOT流量?
  • 【FATFS】f_mount函数详细解析
  • Python+Pytest框架,“api_key.py文件怎么编写“?
  • Ubuntu下beanstalkd无法绑定局域网IP地址以及消息队列beanstalkd上的error: JOB_TOO_BIG的解决
  • ZYNQ LWIP(RAW API) TCP函数学习
  • 每日OJ_牛客_点击消除(栈)
  • 反激电路中TL431光耦反馈参数的计算,环路设计思路
  • Stream流的思想和获取Stream流
  • 极越造车2.0:01销量回暖,07杀出血路,ASD抢跑FSD
  • 【React系列】如何构建React应用程序
  • 【技术性】Search知识
  • Apache Zeppelin在Apache Trafodion上的可视化
  • CentOS 7 修改主机名
  • CSS 专业技巧
  • ES6 学习笔记(一)let,const和解构赋值
  • go append函数以及写入
  • Hibernate最全面试题
  • Markdown 语法简单说明
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 闭包--闭包作用之保存(一)
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 好的网址,关于.net 4.0 ,vs 2010
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 跨域
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 批量截取pdf文件
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 浅谈web中前端模板引擎的使用
  • 实现简单的正则表达式引擎
  • 正则表达式小结
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (1)(1.13) SiK无线电高级配置(六)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (办公)springboot配置aop处理请求.
  • (备忘)Java Map 遍历
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (蓝桥杯每日一题)love
  • (六)软件测试分工
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十六)串口UART
  • (十五)使用Nexus创建Maven私服
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)ORM
  • .bat文件调用java类的main方法