You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

rocketmq运行原理

RocketMQ 是一款高性能、低延迟、分布式、可靠的消息中间件。本文将介绍 RocketMQ 的运行原理和工作流程。

  1. RocketMQ 架构

RocketMQ 架构包括生产者、消费者、Broker、命名服务和存储服务等组件。其中生产者和消费者负责消息的发送和接收,Broker 负责消息的存储和转发,命名服务负责服务发现和路由,存储服务负责消息的持久化存储。

  1. RocketMQ 消息的发送、接收流程

(1)消息的发送流程

生产者通过 TCP 协议连接到 Namesrv 上,获取当前可用的 Broker 列表。生产者将消息发送到 Broker,Broker 将消息存储在存储服务中,并通过 NotifyMastery 通知 NameServer,NameServer 再通知消费者

(2)消息的接收流程

消费者向 Namesrv 发送请求,获取当前可用的 Broker 列表。消费者向 Broker 发送请求,获取消息并消费。消费者消息消费后,向 Broker 发送消费确认请求,Broker 记录消费 offset 并更新存储服务中的消息状态。

  1. RocketMQ 存储原理

RocketMQ 的消息存储采用的是基于日志的方式,将消息存储在 PageCache 中,在下发 ACK 时将消息标记为已消费。RocketMQ 支持同步刷盘和异步刷盘,同步刷盘在 Broker 收到消息后会立即写入磁盘,但会降低 Broker 的性能,异步刷盘则会将消息存储在 PageCache 中,有一定的性能优势,但可能会丢失部分消息

示例代码:

生产者发送消息

public class ProducerTest {
    public static void main(String[] args) throws Exception {
        DefaultMQProducer producer = new DefaultMQProducer("ProducerGroup");
        producer.setNamesrvAddr("192.168.56.101:9876");
        producer.start();
        Message message = new Message("TopicTest", "TagA", "Hello RocketMQ".getBytes(RemotingHelper.DEFAULT_CHARSET));
        SendResult result = producer.send(message);
        System.out.println("发送结果:" + result);
        producer.shutdown();
    }
}

消费者消费消息

public
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
基于 Apache RocketMQ 构建的低延迟、高并发、高可用的分布式消息中间件

社区干货

RocketMQ 存储机制浅析

ActiveMQ(默认采用的 KahaDB 做消息存储)可选用 JDBC 做消息持久化,通过简单的 xml 配置信息即可实现 JDBC 消息存储。使用文件系统做持久化的情况下,可获得更高效的 I/O 读写。* Broker Store 目录结构``` storePathRootDir=/cache1/rocketmq/broker/data ├── abort // 该文件在 Broker 启动后会自动创建,正常关闭 Broker,该文件会自动消失。若在没有启动 Broker 的情况下,发现这个文件是存...

打造新一代云原生"消息、事件、流"统一消息引擎的融合处理平台 | 社区征文

RocketMQ基于大规模云计算环境的实践经验(例如,阿里(双十一、双十二)、携程(过年高峰期)),辅助了成千上万的企业完成数字化转型,从而实现了从互联网消息中间件到云原生消息中间件的发展变革。RocketMQ与其他消息中间... 比如RabbitMQ无法水平扩展单队列能力、Kafka扩容需要大量数据拷贝和均衡。这些现有解决方案都不适用于为大规模客户提供弹性服务的公共云环境。![picture.image](https://p3-volc-community-sign.byteimg.com/to...

如何解决使用RocketMQ的消息轨迹信息无法查看问题

# 问题描述RocketMQ 正常生产和消费消息,但是消费轨迹无法查看的问题该如何排查?# 问题分析此类问题原因一般如下:1. 客户端 SDK 使用的版本不对, 需要使用 SDK 版本为 4.8.0, 4.7 和 4.9 的版本均会导致前端页... DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName", aclHook,true,null);```* 消费者开启消息轨迹:```javaAclClientRPCHook aclHook = new AclClientRPCHook(new SessionCredential...

使用golang调用RocketMQ SDK

# 前言本文档介绍使用go语言调用火山引擎RocketMQ SDK。# 关于实验- 预计部署时间:30分钟- 级别:初级- 相关产品:中间件-RocketMQ- 受众: 通用# 实验说明## 第一步、创建RocketMQ实例在控制台创建RocketMQ... //此处填写控制台RocketMQ实例概览中的TCP内网接入点,目前不支持公网接入,示例http://MQ_INST_50392uo8m9em_xxxxx.rocketmq.ivolces.com:9876 producer.WithRetry(2), producer.WithCredentials(primitive.Cre...

特惠活动

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

域名转入服务

域名转入首年1元起,搭配云服务器,邮箱建站必选
1.00/首年起38.00/首年起
立即购买

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

rocketmq运行原理-优选内容

应用场景
消息队列 RocketMQ版可以实现高效的异步通信,有效地将上下游系统解耦,即使上、下游系统出现不可用甚至宕机,都不会影响到对方系统的正常运转,确保彼此业务的连续性。 削峰填谷流量削峰是消息队列 RocketMQ版的常用场... 消息队列 RocketMQ版可作为缓冲器,通过削峰填谷将上游系统突增的请求集中收集,下游系统可根据自己的实际消费能力处理请求消息,使得下游系统可在安全水位内平滑稳定的运行,避免超高流量的冲击,保证上下游系统可用性...
RocketMQ 存储机制浅析
ActiveMQ(默认采用的 KahaDB 做消息存储)可选用 JDBC 做消息持久化,通过简单的 xml 配置信息即可实现 JDBC 消息存储。使用文件系统做持久化的情况下,可获得更高效的 I/O 读写。* Broker Store 目录结构``` storePathRootDir=/cache1/rocketmq/broker/data ├── abort // 该文件在 Broker 启动后会自动创建,正常关闭 Broker,该文件会自动消失。若在没有启动 Broker 的情况下,发现这个文件是存...
使用前必读
消息队列 RocketMQ版是一款火山引擎提供的消息中间件服务。RocketMQ 基于高可用分布式集群技术,提供了高可靠、可扩展、灵活路由的托管消息队列,泛应用于秒杀、流控、系统解耦等场景。 调用说明消息队列 RocketMQ版提供了 OpenAPI,您可以通过发送 HTTPS 请求调用消息队列 RocketMQ版的 API。调用API时,您需要向火山引擎消息队列 RocketMQ版 API 的服务端地址发送 HTTPS 请求,并参考各个业务接口文档,在 HTTPS 请求中填入正确的请求...
使用前必读
消息队列 RocketMQ版是一款火山引擎提供的消息中间件服务。RocketMQ 基于高可用分布式集群技术,提供了高可靠、可扩展、灵活路由的托管消息队列,泛应用于秒杀、流控、系统解耦等场景。 调用说明消息队列 RocketMQ版提供了 OpenAPI,您可以通过发送 HTTPS 请求调用消息队列 RocketMQ版的 API。调用 API 时,您需要向火山引擎消息队列 RocketMQ版 API 的服务端地址发送 HTTPS 请求,并参考各个业务接口文档,在 HTTPS 请求中填入正确的请...

rocketmq运行原理-相关内容

签名机制

消息队列 RocketMQ版采用火山引擎统一的签名机制。为了保证请求者身份的合法性以及请求在传输过程中不被恶意篡改,火山引擎签名机制要求请求者对请求参数进行哈希值计算,经过加密后同 API 请求一起发送到服务器中,服务器将以同样的机制对收到的请求进行签名计算,并以此与请求者传来的签名进行比对,若签名未通过验证,请求将被拒绝。如何计算签名,请参考签名方法。

什么是消息队列 RocketMQ

消息队列 RocketMQ版是火山引擎基于 Apache RocketMQ 构建的分布式消息中间件服务,完全兼容开源 RocketMQ 的各个组件与概念,同时具备低延迟、弹性高可靠、高吞吐等特性优势,业务代码无需改造,帮助用户快速迁移上云。 产品功能多种消费类型:消息队列 RocketMQ版提供灵活、可扩展性强的消费主题模式设置,支持发布/订阅、集群消费和广播消费模式。 多种消息类型:消息队列 RocketMQ版支持丰富的消息类型,支持顺序消息、事务消息、定...

消息队列 RocketMQ版-火山引擎

消息队列 RocketMQ版是一款基于 Apache RocketMQ 构建的分布式消息中间件服务,完全兼容开源 RocketMQ 客户端。消息队列 RocketMQ版具备低延迟、弹性高可靠、高吞吐等特性优势,支持顺序、延迟、定时、重投、死信消息等功能,完美适配电商大促等业务场景

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

域名转入服务

域名转入首年1元起,搭配云服务器,邮箱建站必选
1.00/首年起38.00/首年起
立即购买

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

步骤二:创建资源

本文将为您介绍消息队列 RocketMQ版控制台创建 RocketMQ 实例、Group 和 Topic 的操作步骤。 准备工作已开通消息队列 RocketMQ版,并进行了相关环境准备。创建的 RocketMQ 实例运行于私有网络中,在创建前确保已存在可用的私有网络和子网,详情请参见环境准备。 如果需要通过公网访问消息队列 RocketMQ版实例,请先申请同地域的 EIP,建议该 EIP 的带宽上限大于预估的公网业务流量峰值。详细操作步骤请参考申请公网 IP。 1 创建实例说...

创建 RocketMQ 触发器

函数服务支持对接火山引擎的 消息队列 RocketMQ 版。 通过创建 RocketMQ 触发器,函数服务将作为消费者消费 RocketMQ 中的消息,并将消息传递给用户函数,触发函数代码逻辑。您无需关心函数服务消费消息的细节,只需编... 详细操作可参见 RocketMQ 快速入门。 使用限制每个函数最多支持创建 20 个触发器。 RocketMQ 实例和函数必须处于同一 VPC 下。 若需要修改函数的 VPC 或子网,必须先停用或删除所有的 MQ 触发器。 RocketMQ 触发器...

迁移概述

背景信息火山引擎基于Apache RocketMQ 构建了稳定、安全的消息队列 RocketMQ版。与和开源 RocketMQ 相比,消息队列 RocketMQ版支持 VPC 访问,免部署免运维,具备更高的稳定性和安全性,支持消息查询、全链路消息轨迹查询以及消息回溯等功能,帮助您快速发现和处理系统问题,提高运维效率。RocketMQ 业务迁移是指将自建或其他云厂商的 RocketMQ 迁移到火山引擎消息队列 RocketMQ版。对于消息队列来说,如需在业务运行过程中实现集群迁移...

RocketMQ 实例更配场景

如果当前使用的消息队列 RocketMQ版指标值超过实例的某项规格限制,实例集群运行负载超过推荐负载上限,可能会触发限流机制。建议您及时关注实例运行的各项规格指标数据,在触发限流前调整实例规格。本文档介绍需要调整实例规格的典型业务场景。 需要升级实例规格的场景计算规格升配涉及到 RocketMQ 实例计算资源的调整,升级计算规格可以提高实例的吞吐量、降低请求时延。消息队列 RocketMQ版推荐您根据以下指标来判断是否有必要进行...

创建 Topic

而消息的消费者则通过订阅该 RocketMQ Topic 来消费消息。 说明 每个实例的 Topic 数量配额与实例规格有关,各个规格实例可创建的 Topic 数量请参考产品规格。 前提条件已创建 RocketMQ 实例,且实例状态为运行中,... 保留字符:RMQ_SYS_TRANS_OP_HALF_TOPIC、BenchmarkTest、TBW102、OFFSET_MOVED_EVENT、SELF_TEST_TOPIC、RMQ_SYS_TRANS_HALF_TOPIC、SCHEDULE_TOPIC_XXXX、RMQ_SYS_TRACE_TOPIC 特殊前缀:rocketmq-broker-、%RETRY...

步骤三:生产消费普通消息

准备开发环境,并创建相关服务资源之后,您可以调用开源 TCP 协议的 RocketMQ SDK 收发普通消息。本文档以 TCP 协议的 Java SDK 为例,介绍消息队列 RocketMQ版收发普通消息的基本步骤。 注意事项在使用 Java SDK 接入... RocketMQ版控制台的Topic管理页签中找到需要测试消息发送的 Topic,并在其对应的操作列单击发送消息。详细说明请参考在线调试。建议仅在业务调试阶段进行普通消息的发送测试。业务正常运行期间通过该方式发送消息可...

特惠活动

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

域名转入服务

域名转入首年1元起,搭配云服务器,邮箱建站必选
1.00/首年起38.00/首年起
立即购买

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

数据智能知识图谱
火山引擎数智化平台基于字节跳动数据平台,历时9年,基于多元、丰富场景下的数智实战经验打造而成
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询