首页 > 其他分享 >消息中间件RocketMQ

消息中间件RocketMQ

时间:2024-12-19 17:30:09浏览次数:7  
标签:消费者 队列 处理 消息 消息中间件 RocketMQ 生产者

什么是MQ?
 

MQ(Message Queue,消息队列)是一种在计算机系统中实现消息传递的中间件技术,通常用于解耦和异步处理。它通过将消息(数据)从发送方(生产者)传递到接收方(消费者)来实现系统组件之间的通信。消息队列允许系统中的不同组件在不直接依赖彼此的情况下进行交互。

MQ的基本概念

  1. 消息:消息是数据的载体,通常是一个结构化的对象或字节流,包含了需要传输的信息。例如,订单信息、用户数据等。

  2. 队列:消息被存储在一个队列中,队列是一个先进先出(FIFO)的数据结构。消息会按照发送顺序进入队列,并等待消费者取出。

  3. 生产者:生产者是消息的发送者,它负责将消息发送到消息队列。生产者不需要知道消费者是谁,只需要将消息推送到队列。

  4. 消费者:消费者是消息的接收者,它从队列中获取消息并进行处理。消费者可以独立于生产者存在,通常是异步处理的。

  5. 消息中间件:消息队列通常由消息中间件提供,例如 Kafka、RabbitMQ、ActiveMQ、RocketMQ、Amazon SQS 等。

MQ的通信模型

  1. 点对点模型(Point-to-Point, P2P):在P2P模型中,每条消息只能被一个消费者消费。一旦消息被某个消费者处理后,就不再可用。这种模型适用于一对一的情况,比如发送任务给工作者节点。类似于单独给某人发送手机短信,只有指定的人才能收到。

  2. 发布/订阅模型(广播)(Publish/Subscribe, Pub/Sub):在Pub/Sub模型中,生产者发布消息到主题,任何订阅了该主题的消费者都会接收到消息。这种模型允许一对多的通信,即多个消费者可以监听同一个主题。类似于学校广播通知,所有同学都能接收到。

MQ的优势

  1. 解耦:生产者和消费者不直接联系,消息队列充当了两者之间的桥梁。这样可以降低系统耦合度,使得系统更加灵活。

  2. 异步处理:消息队列使得系统的不同部分能够异步执行。例如,生产者可以迅速发送消息,而消费者可以在适当的时候处理这些消息。这样可以提高系统的响应速度。

  3. 流量削峰:在高并发的情况下,生产者可以迅速将大量的消息发送到队列,而消费者可以根据自身的处理能力逐步消费这些消息,避免系统过载。

  4. 可靠性:通过消息持久化、确认机制等,消息队列能够保证消息的可靠传递。如果消费者处理失败,消息队列可以保证消息不会丢失,消费者可以重试处理。

  5. 可扩展性:通过增加生产者、消费者和消息队列的实例,系统可以轻松扩展,处理更多的消息量。

MQ的应用场景

  1. 异步任务处理:在需要延迟执行或高并发处理的场景中,可以通过消息队列异步执行任务。例如,发送电子邮件、处理订单支付等。

  2. 事件驱动架构:在微服务架构中,消息队列作为服务间通信的媒介,可以解耦各个微服务,并通过事件触发业务逻辑。

  3. 流量削峰:在高并发场景下,生产者将请求推送到消息队列中,消费者逐步处理,避免系统因为瞬时请求过多而崩溃。

  4. 日志收集:各个服务将日志信息推送到消息队列中,专门的日志处理系统可以从队列中消费这些日志,进行集中化处理和存储。

  5. 分布式系统通信:在分布式系统中,消息队列可以作为各个模块或服务之间的通信方式,实现跨服务、跨系统的数据传递。

RocketMQ 本地环境搭建

关于 RocketMQ 相关的基本概念,小伙伴们可翻阅官网:

https://rocketmq.apache.org/zh/docs/4.x/producer/01concept1

下载 RocketMQ 二进制包

https://rocketmq.apache.org/download/

Source下载:源码下载
Binary:可运行程序下载


设置环境变量
 



添加一个 ROCKETMQ_HOME 变量,值为刚刚我们二进制包解压的具体路径:

 

启动 RocketMQ


打开 cmd 命令行工具,进入到 RocketMQ 安装包的 /bin 文件夹下,执行如下命令,先将 namesrv 启动起来:
 

start .\mqnamesrv.cmd


命令执行完成后,会打开一个新的窗口,若提示 The Name Server boot sucess. , 则表示 namesrv 启动成功了。
 

启动 broker

接着,执行如下命令,准备启动 broker :

.\mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true

命令执行完成后,若提示 The broker .. boot success. , 则表示运行成功了。同样的,窗口不要关闭。

RocketMQ 控制台

为了更好的控制RecketMQ,还需要一个控制台,地址:

https://github.com/apache/rocketmq-dashboard

下载完成后解压,并使用 IDEA 打开项目。

修改完成后,运行 App 启动类,将项目跑起来。启动成功后,浏览器访问 localhost:8080, 即可打开 RocketMQ 的控制台了,小伙伴们可以每个菜单都点点,了解一下:

标签:消费者,队列,处理,消息,消息中间件,RocketMQ,生产者
From: https://blog.csdn.net/2301_79890818/article/details/144589912

相关文章

  • RocketMQ系列3:核心技术介绍
    1介绍RocketMQ是一款分布式消息中间件,其核心技术涉及多个核心概念,包括主题、队列、消息、生产者、消费者、消费者分组以及订阅关系。以下是对这些核心技术的详细说明:2核心技术实现2.1主题(Topic)1.定义:主题是RocketMQ中消息传输和存储的顶层容器,用于标识同一类型业务逻辑的......
  • rocketmq-exporter编译部署
    #下载ApacheMavenwgethttps://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gztar-xvfapache-maven-3.9.6-bin.tar.gzmvapache-maven-3.9.6/usr/local/maven#将maven加入到环境变量vim/etc/profile#最底部配置exportMAVEN_HOME=/usr/loc......
  • RocketMQ的下载与安装(快速安装无痛使用)、图形化配置
    不说废话,就让大家直接下载安装,无痛使用【不需要了解很多安装方式】RocketMQ的下载方式官网下载下载地址2.安装环境要求说明 Windows/Linux64位系统JDK1.8(64位)源码安装需要安装Maven 3.2.x一、Windows中的安装1.官网中下载RocketMQ的运行版本下载地址2.......
  • 四大主流消息队列 场景化选型指导:kafka、rocketmq、rabbitmq、pulsar
    探讨消息队列在软件开发中的应用与选择在日常的软件开发过程中,我们常常会遇到系统间的异步通信、流量削峰填谷、日志收集等需求。这时,消息队列就成为了解决这类问题的有效工具之一。比如,在电商平台中,当用户下单时,订单信息不仅需要立即保存到数据库中,还需要同步更新库存、生成物流......
  • 记一次与Rocketmq的进程异常行为修复过程
    rocketmq部署在docker中。前段时间,阿里云服务器发出安全告警看到curl和startfsrv.sh,下意识地认为这是下载了一个恶意脚本,接下来把恶意脚本找到,分析内容,修复的思路就有了。但是找到脚本之后,创建时间是2019年,同时也只是rocketmq一个正常的启动脚本。这样思路就断了。接下来只能......
  • solon 集成 rocketmq5 sdk
    使用rocketmq5是比较简单的事情。也有些同学对sdk原始接口会陌生,会希望有个集成的示例。<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client-java</artifactId><version>${rocketmq5.version}</version></depen......
  • 商业版vs开源版:一图看懂云消息队列 RocketMQ 版核心优势
    十年磨砺,应“云”而生云消息队列RocketMQ版是阿里云基于ApacheRocketMQ构建的低延迟、高并发、高可用、高可靠的分布式“消息、事件、流”统一处理平台。自2012年诞生于阿里巴巴集团的核心交易链路以来,RocketMQ经历了多次“双十一”的万亿级数据洪峰验证。2015年,阿里......
  • RocketMq学习-Producer(三)
    一、Producer启动流程DefaultMQProducer设置了NamesrvAddr地址,需要从nameserver获取broker信息publicstaticvoidmain(String[]args)throwsMQClientException,InterruptedException{ System.setProperty("mqself.home","F:\\rocketmq"); DefaultMQProducerp......
  • RocketMQ系列2:领域模型和技术概念
    ★消息队列16篇1领域模型ApacheRocketMQ是一款典型的分布式架构下的消息中间件产品,使用异步通信方式和发布订阅的消息传输模型。ApacheRocketMQ产品具备异步通信的优势,系统拓扑简单、上下游耦合较弱,主要应用于异步解耦,流量削峰填谷等场景。说明:以上图片来自官网如上,Roc......
  • 安装Rocketmq
    本次要求是单机版1.首先需要安装完成JDK环境2.下载所需要版本包及dashboard包[root@app-bj-ali-ecs1~]#wgethttps://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip[root@app-bj-ali-ecs1~]#wgethttps://dist.apache.org/repo......