了解ActiveMQ、RabbitMQ、RocketMQ和Kafka的特点

ActiveMQ

ActiveMQ是一种基于JMS(Java消息服务)规范的消息中间件,由Apache基金会开发和维护
核心组件和特点:

  1. Broker(代理):ActiveMQ的核心组件是Broker,它负责接收、存储和路由消息,可以配置为单个实例或者集群,提供高可用性和可扩展性。

  2. Producer(生产者)和Consumer(消费者):Producer负责发送消息,而Consumer负责接收和处理消息。

  3. Destination(目的地):目的地是消息的最终接收位置,可以是队列(Queue)或主题(Topic)。队列实现了点对点模式,每个消息只能被一个消费者接收;主题实现了发布-订阅模式,每个消息可以被多个消费者接收。

  4. Message(消息):消息是在生产者和消费者之间传递的数据单元。它包含了消息的内容、属性和元数据等信息。

  5. Connector(连接器):连接器是用于与其他系统或协议进行集成的组件,如JMS、REST、AMQP等。

RabbitMQ

RabbitMQ是一种开源的AMQP(高级消息队列协议)消息中间件,使用Erlang语言编写,最早于2007年发布,由Rabbit Technologies Ltd.开发,现在是Pivotal Software的一部分。

核心组件:

  1. 生产者(Producer):生产者是消息的发送方,它负责创建并发送消息到RabbitMQ的消息队列。生产者将消息发送到交换机,并指定一个路由键(Routing Key)来决定消息的路由方式。

  2. 消息队列(Message Queue):用于存储消息,以便消费者可以按需从队列中获取并处理消息,消息队列采用先进先出(FIFO)的原则,确保消息按照顺序进行处理。

  3. 消费者(Consumer):消费者是消息的接收方,它负责从消息队列中获取消息,并进行相应的处理。消费者可以订阅一个或多个队列,以接收特定类型的消息,并对消息进行业务逻辑的处理。

  4. 交换机(Exchange):交换机是消息的分发中心。它接收来自生产者的消息,并根据预定义的规则(如路由键、绑定等)将消息路由到一个或多个消息队列中。

RocketMQ

RocketMQ是由阿里巴巴开发的分布式消息中间件(Java语言),最早于2012年发布。

核心组件:

  1. 生产者(Producer):负责产生消息并发送给RocketMQ的消息队列。生产者通过发送消息到指定的Topic(主题)来进行消息的发布。

  2. 消费者(Consumer):从RocketMQ的消息队列中获取消息并进行处理,消费者可以按照一定的规则订阅感兴趣的Topic,并接收该Topic下的消息进行消费。

  3. 消息队列(Message Queue):用于存储消息的缓冲区。消息队列将生产者发送的消息进行存储,并按照一定的规则进行分发给消费者。

  4. 主题(Topic):主题是消息的逻辑分类,一个主题可以对应一个或多个消息队列,生产者将消息发送到指定的主题,而消费者则订阅感兴趣的主题来接收消息。

  5. 订阅(Subscription):消费者通过订阅特定的主题来接收该主题下的消息,订阅可以按照标签(Tag)或表达式(Expression)进行过滤,以满足不同的消费需求。

Kafka

Kafka是一种分布式流处理平台和消息中间件(Scala语言编写),最早由LinkedIn公司开发,2011年LinkedIn将Kafka开源,并将其交给Apache软件基金会进行管理。

核心组件:

  1. 主题(Topic):主题是消息的逻辑分类,生产者将消息发送到特定的主题,消费者订阅并从主题中读取消息。

  2. 分区(Partition):主题可以被分成多个分区,每个分区是消息的有序序列,分区允许Kafka对消息进行水平扩展和并行处理。

  3. 生产者(Producer):生产者负责将消息发布到指定主题,生产者可以选择将消息发送到特定的分区,也可以让Kafka根据指定的分区策略自动选择分区。

  4. 消费者(Consumer):消费者从指定的主题订阅消息,并按照一定的顺序消费消息,消费者可以以不同的消费组(Consumer Group)进行组织,每个消费组都可以独立地消费消息。

  5. 代理服务器(Broker):代理服务器是Kafka集群中的节点,负责存储和管理消息,每个分区都会在集群中的多个代理服务器之间进行复制,以提供高可用性和容错性。

  6. ZooKeeper:ZooKeeper是Kafka使用的协调服务,用于管理和协调Kafka集群的各个组件,它负责存储集群的元数据、监控集群状态以及进行故障恢复等工作。

特点对比和总结

特点RabbitMQActiveMQRocketMQKafka
公司Pivotal SoftwareApacheAlibabaApache
开发语言ErlangJavaJavaScala
协议支持AMQP,XMPP,SMTP,STOMPOpenWire,STOMP,REST,XMPP,AMQPRocketMQ协议Kafka协议
可用性一般
单机吞吐量一般非常高
消息延迟微秒级毫秒级毫秒级毫秒以内
消息可靠性一般一般

追求可用性:Kafka、 RocketMQ 、RabbitMQ
追求可靠性:RabbitMQ、RocketMQ
追求吞吐能力:RocketMQ、Kafka
追求消息低延迟:RabbitMQ、Kafka

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/91640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抓包习讯云院校数据通过PHP解析导入数据库

前言 最近,打卡APP需要这个数据,通过抓包后发现这个数据是固定的,获取很简单,但是数据太多,手动导入不显示,于是分析了json格式后果断通过脚本完成 【推荐】 《【MQTT】Esp32数据上传采集:最…

elementui引入弹出框报错:this.$alert is not defined 解决方案

1.按需引入文件element.js 注意:引入Message,MessageBox两个组件就行,alert包括在MessageBox里面了。 之前我引入了Alert组件,发现不行 2.在vue的prototype里注册伪名字 3.组件里直接调用就行了 4.实现效果 我发现elementui调用…

React 入门笔记

前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了🤣, 现在从市场份额来看, 确实 React 还…

保护模式阶段测试-模拟3环0环调用

保护模式阶段测试-模拟3环0环调用 最近又复习了一下保护模式相关的内容,然后打算搞个能够把段页的大部分知识能够串联起来的测试代码 最终想到的一个项目如下: 三环部分: 0.编写一个函数读取高2g的地址内容 1.通过设备通信到0环告诉0环我新…

【通意千问】大模型GitHub开源工程学习笔记(2)--使用Qwen进行推理的示例代码解析,及transformers的库使用

使用Transformers来使用模型 如希望使用Qwen-chat进行推理,所需要写的只是如下所示的数行代码。请确保你使用的是最新代码,并指定正确的模型名称和路径,如Qwen/Qwen-7B-Chat和Qwen/Qwen-14B-Chat 这里给出了一段代码 from transformers import AutoModelForCausalLM, Aut…

手动实现Transformer

Transformer和BERT可谓是LLM的基础模型,彻底搞懂极其必要。Transformer最初设想是作为文本翻译模型使用的,而BERT模型构建使用了Transformer的部分组件,如果理解了Transformer,则能很轻松地理解BERT。 一.Transformer模型架构 1…

【Spring Cloud】深入理解 Eureka 注册中心的原理、服务的注册与发现

文章目录 前言一、微服务调用出现的问题1.1 服务消费者如何获取服务提供者的地址信息?1.2 如果有多个服务提供者,消费者该如何选择?1.3 消费者如何得知服务提供者的健康状态? 二、什么是 Eureka2.1 Eureka 的核心概念2.2 Eureka 的…

MyBatis 映射文件(Mapper XML):配置与使用

MyBatis 映射文件(Mapper XML):配置与使用 MyBatis是一个强大的Java持久化框架,它允许您将SQL查询、插入、更新和删除等操作与Java方法进行映射。这种映射是通过MyBatis的映射文件,通常称为Mapper XML文件来实现的。本…

国庆创作周 组播《第十二课》

国庆创作周《第十二课》图解

5自由度雄克机械臂仿真描点

5自由度雄克机械臂仿真描点 任务 建立雄克机械臂的坐标系和D-H参数表,使用Matlab机器人工具箱(Robotics Toolbox),用机械臂末端执行器触碰8个红色的目标点。 代码 %% 机器人学 format compact close all clear clc%% DH参数 L…

Springboot: Spring Cloud Gateway 使用的基本概念及配置介绍

1. SpringCloud 与 SpringBoot的版本映射关系 在已有的Spring Boot项目中增加Spring Cloud,首先要确定使用的Spring Cloud的版本,这取决于项目使用的Spring Boot的版本 SpringCloud 与 SpringBoot的版本映射关系 如果两者的版本不兼容,再会…

R | R及Rstudio安装、运行环境变量及RStudio配置

R | R及Rstudio安装、运行环境变量及RStudio配置 一、介绍1.1 R介绍1.2 RStudio介绍 二、R安装2.1 演示电脑系统2.2 R下载2.3 R安装2.4 R语言运行环境设置(环境变量)2.4.1 目的2.4.2 R-CMD测试2.4.3 设置环境变量 2.5 R安装测试 三、RStudio安装3.1 RStu…

vue.draggable拖拽,项目中三个表格互相拖拽的实例操作,前端分页等更多小技巧~

vue.draggable中文文档 - itxst.com官网在这里&#xff0c;感兴趣的小伙伴可以看看。 NPM或yarn安装方式 yarn add vuedraggable npm i -S vuedraggable UMD浏览器直接引用JS方式 <script src"https://www.itxst.com/package/vue/vue.min.js"></script&…

蓝桥等考Python组别六级008

第一部分:选择题 1、Python L6 (15分) 运行下面的程序,哪个值不可能出现?( ) import random print(random.randint(0, 3) * 2) 0236正确答案:C 2、Python L6 (15分) 运行下面的程序,输入哪

数据分析(python)学习笔记1.0

《利用Python进行数据分析》(原书第2版) 《利用Python进行数据分析》(原书第2版) 《利用Python进行数据分析》(原书第2版) 社区和会议 除了网络搜索,科学、数据相关的Python邮件列表对于解决问题也非常有帮助。可以看看下列邮件列表: pydata:与数据分析和pandas相…

解决方案:解决https页面加载http资源报错

HTTPS页面加载HTTP资源会报错的原因是出于安全性考虑。 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是一种通过使用SSL/TLS加密通信来保护数据传输的协议&#xff0c;它确保了客户端和服务器之间的安全连接。 当HTTPS页面尝试加载非加密的HTTP资源时&a…

Leetcode算法题练习(一)

目录 一、前言 二、移动零 三、复写零 四、快乐数 五、电话号码的字母组合 六、字符串相加 一、前言 大家好&#xff0c;我是dbln&#xff0c;从本篇文章开始我就会记录我在练习算法题时的思路和想法。如果有错误&#xff0c;还请大家指出&#xff0c;帮助我进步。谢谢&…

PHP 二手物品交易网站系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 二手物品交易网站系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/88385559 二、功能介…

城市智慧公厕:引领科技创新的新时代

城市智慧公厕已经成为当下社会治理模式的升级范式&#xff0c;催生了无限的科技创新。如智慧公厕源头厂家广州中期科技有限公司&#xff0c;所推出的智慧公厕整体解决方案&#xff0c;除基本的厕位监测与引导、环境监测与调节、安全防范与管理、保洁考勤管理、多媒体交互、综合…

自学WEB后端05-Node.js后端服务链接数据库redis

嘿&#xff0c;亲爱的小伙伴们&#xff01;&#x1f604; 今天我要给大家分享一个超级方便且高效的 NoSQL 类型数据库——Redis&#xff01;&#x1f4a1; 它可不是一般的关系型数据库哦&#xff0c;而是以键值对形式存储数据的内存数据库。&#x1f4da; 快跟着我一起来学习如…