![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RocketMQ
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
RocketMQ 入门 —— 简单的消息示例
使用 RocketMQ 以三种方式发送消息:可靠的同步,可靠的异步和单向传输。可靠的同步传输应用:可靠的同步传输广泛应用于重要通知消息,短信通知,短信营销系统等。public class SyncProducer { public static void main(String[] args) throws Exception { //Instantiate with a producer group name. DefaultMQProducer pr原创 2021-08-15 15:43:00 · 130 阅读 · 0 评论 -
RocketMQ 入门 —— 安装以及快速入门
安装条件64位操作系统,建议使用 Linux / Unix / Mac; 64位JDK 1.8+; Maven 3.2.x下载和构建从https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip下载 4.2.0 的源码版本,执行以下命令来解压4.2.0源码版本并构建二进制文件。unzip rocketmq-all-4.2.0-source-release...原创 2021-08-14 14:32:37 · 125 阅读 · 0 评论 -
RocketMQ 入门 —— 原理与实践
这篇文章写成距今(201808)已经两年半了,其中的内容我已经不能保证是否已经过时,由于当前的业务中也没有在使用RocketMQ,因此很少有时间再去刨代码,很多实践方面的问题也不能很好的为大家解决。因此,建议大家权当入门文章看看,实践中遇到问题的话,在本机跑一跑代码且调试一下,或者去社区逛逛,有可能对你解决问题的帮助会大一些。当然简单的问题,我会尽力和大家交流,谢谢大家。分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问.原创 2020-06-06 18:46:32 · 175 阅读 · 0 评论 -
RocketMQ 入门 —— 基于 Spring 使用 RocketMQ 以及监控
前提通过前面两篇文章可以简单的了解 RocketMQ 和 安装 RocketMQ ,今天就将 SpringBoot 和 RocketMQ 整合起来使用。创建项目在 IDEA 创建一个 SpringBoot 项目,项目结构如下:pom 文件引入 RocketMQ 的一些相关依赖,最后的 pom 文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.o..原创 2020-06-06 18:36:06 · 559 阅读 · 0 评论 -
RocketMQ 入门 —— 初探
概念专业术语Producer消息生产者,负责产生消息,一般由业务系统负责产生消息。Consumer消息消费者,负责消费消息,一般是后台系统负责异步消费。Push ConsumerConsumer 的一种,应用通常向 Consumer 对象注册一个 Listener 接口,一旦收到消息,Consumer 对象立刻回调 Listener 接口方法。Pull ConsumerConsumer 的一种,应用通常主动调用 Consumer 的拉消息方法从 Broker 拉消息,主动权由原创 2020-06-06 18:10:01 · 103 阅读 · 0 评论 -
RocketMQ 源码分析 —— RPC 通信(二)
在(一)篇中主要介绍了RocketMQ的协议格式,消息编解码,通信方式(同步/异步/单向)、消息发送/接收以及异步回调的主要通信流程。而本篇将主要对RocketMQ消息队列RPC通信部分的Netty多线程模型进行重点介绍。一、为何要使用Netty作为高性能的通信库?在看RocketMQ的RPC通信部分时候,可能有不少同学有这样子的疑问,RocketMQ为何要选择Netty而不直接使用JDK的NIO进行网络编程呢?这里有必要先来简要介绍下Netty。 Netty是一个封装了JDK的NIO库的高性能网络原创 2020-06-06 17:03:41 · 302 阅读 · 0 评论 -
RocketMQ 源码分析 —— RPC 通信(一)
消息队列的本质在于消息的发送、存储和接收”。那么,对于一款消息队列来说,如何做到消息的高效发送与接收是重点和关键一、RocketMQ中Remoting通信模块概览RocketMQ消息队列的整体部署架构如下图所示:先来说下RocketMQ消息队列集群中的几个角色:(1)NameServer:在MQ集群中做的是做命名服务,更新和路由发现 broker服务;(2)Broker-Master:broker 消息主机服务器;(3)Broker-Slave:broker 消息从机服务器;原创 2020-06-06 17:01:26 · 170 阅读 · 0 评论 -
RocketMQ 源码分析 —— 集成 Spring Cloud
RocketMQ 介绍RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。具有以下特点:能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力RocketMQ 基本使用下载 RocketMQ下载Rocke..原创 2020-06-06 00:03:27 · 227 阅读 · 0 评论 -
RocketMQ 源码分析 —— 集成 Spring Boot
1. 概述在开始分享https://github.com/apache/rocketmq-spring项目(RocketMQ 集成到 Spring Boot 中),我们先恶趣味的看一段历史:2014-08 Spring Boot 1 正式发布。 2018-03 Spring Boot 2 正式发布。 2018-12 RocketMQ 团队发布 RocketMQ 集成到 Spring Boot 的解决方案,并且提供了中文文档。在阅读本文之前,希望胖友能够先熟读中文文档。最好呢,当然不强制...原创 2020-06-06 00:02:46 · 1245 阅读 · 0 评论 -
RocketMQ 源码分析 —— 事务消息
1. 概述必须必须必须前置阅读内容:《事务消息(阿里云)》2. 事务消息发送2.1 Producer 发送事务消息活动图如下(结合核心代码理解):实现代码如下:1: // ⬇️⬇️⬇️【DefaultMQProducerImpl.java】 2: /** 3: * 发送事务消息 4: * 5: * @param msg 消息 6: * @param tranExecuter 【本地事务】执行器 7: * @param arg 【本地事务】执...原创 2020-06-06 00:02:30 · 168 阅读 · 0 评论 -
RocketMQ 源码分析 —— Filtersrv
1. 概述Filtersrv,负责自定义规则过滤Consumer从Broker拉取的消息。为什么Broker不提供过滤消息的功能呢?我们来看看官方的说法:Broker 端消息过滤 在 Broker 中,按照 Consumer 的要求做过滤,优点是减少了对于 Consumer 无用消息的网络传输。 缺点是增加了 Broker 的负担,实现相对复杂。 (1). 淘宝 Notify 支持多种过滤方式,包含直接按照消息类型过滤,灵活的语法表达式过滤,几乎可以满足最苛刻的过滤需求。...原创 2020-06-05 23:15:36 · 124 阅读 · 0 评论 -
RocketMQ 源码分析 —— 定时消息与消息重试
1. 概述建议前置阅读内容:《RocketMQ 源码分析 —— Message 发送与接收》 《RocketMQ 源码分析 —— Message 拉取与消费(下)》???? 为什么把定时消息与消息重试放在一起?你猜。???? 你猜我猜不猜。2. 定时消息定时消息是指消息发到 Broker 后,不能立刻被 Consumer 消费,要到特定的时间点或者等待特定的时间后才能被消费。下图是定时消息的处理逻辑图:2.1 延迟级别RocketMQ目前只支持固定精度的定时消息。官原创 2020-06-05 23:09:28 · 148 阅读 · 0 评论 -
RocketMQ 源码分析 —— 高可用
1. 概述本文主要解析Namesrv、Broker如何实现高可用,Producer、Consumer怎么与它们通信保证高可用。2. Namesrv 高可用启动多个Namesrv实现高可用。相较于Zookeeper、Consul、Etcd等,Namesrv是一个超轻量级的注册中心,提供命名服务。2.1 Broker 注册到 Namesrv????多个Namesrv之间,没有任何关系(不存在类似Zookeeper的Leader/Follower等角色),不进行通信与...原创 2020-06-05 23:01:38 · 169 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 顺序发送与消费
1. 概述建议前置阅读内容:《RocketMQ 源码分析 —— Message 发送与接收》 《RocketMQ 源码分析 —— Message 拉取与消费(下)》当然对Message发送与消费已经有一定了解的同学,可以选择跳过。RocketMQ提供了两种顺序级别:普通顺序消息 :Producer将相关联的消息发送到相同的消息队列。 完全严格顺序 :在普通顺序消息的基础上,Consumer严格顺序消费。绝大部分场景下只需要用到普通顺序消息。例如说:给用户发送短信消息 ...原创 2020-06-05 01:20:50 · 245 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 拉取与消费(下)
1、概述本文接:《RocketMQ 源码分析 —— Message 拉取与消费(上)》。主要解析Consumer在消费逻辑涉及到的源码。2、ConsumerMQ 提供了两类消费者:PushConsumer: 在大多数场景下使用。 名字虽然是Push开头,实际在实现时,使用Pull方式实现。通过Pull不断不断不断轮询Broker获取消息。当不存在新消息时,Broker会挂起请求,直到有新消息产生,取消挂起,返回新消息。这样,基本和Broker主动Pu...原创 2020-06-05 01:07:18 · 276 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 拉取与消费(上)
1、概述本章主要解析消费逻辑涉及到的源码。 因为篇幅较长,分成上下两篇:上篇:Broker相关源码。 下篇:Consumer相关源码。本文即是上篇。ok,先看第一张关于消费逻辑的图:再看消费逻辑精简的顺序图(实际情况会略有差别):2、ConsumeQueue 结构ConsumeQueue、MappedFileQueue、MappedFile的关系如下:ConsumeQueue:MappedFileQueue:MappedFile= 1 :...原创 2020-06-04 01:14:27 · 238 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 存储
1、概述本文接《RocketMQ 源码分析 —— Message 发送与接收》。 主要解析CommitLog存储消息部分。2、CommitLog 结构CommitLog、MappedFileQueue、MappedFile的关系如下:CommitLog:MappedFileQueue:MappedFile= 1 : 1 : N。反应到系统文件如下:Yunai-MacdeMacBook-Pro-2:commitlog yunai$ pwd/Users/yunai...原创 2020-06-04 00:55:58 · 212 阅读 · 0 评论 -
RocketMQ 源码分析 —— Message 发送与接收
1、概述Producer发送消息。主要是同步发送消息源码,涉及到 异步/Oneway发送消息,事务消息会跳过。 Broker接收消息。(存储消息在《RocketMQ 源码分析 —— Message 存储》解析)2、Producer 发送消息DefaultMQProducer#send(Message)1: @Override2: public SendResult send(Message msg) throws MQClientException, Remoting..原创 2020-06-04 00:49:00 · 272 阅读 · 0 评论 -
RocketMQ 源码解析 —— 调试环境搭建
友情提示阅读源码之前,建议胖友对 RocketMQ 的文档已经熟读。目前 RocketMQ 4 的中文文档很少,所以英文不太好的胖友,推荐看看如下资料:《RocketMQ 用户指南》基于 RocketMQ 3 的版本。 《RocketMQ 原理简介》基于 RocketMQ 3 的版本。 《RocketMQ 最佳实践》基于 RocketMQ 3 的版本。 《阿里云 —— 消息队列 MQ》阿里云的消息队列,就是 RocketMQ 的云服务。1. 依赖工具JDK :1.8+ Mave...原创 2020-06-04 00:37:34 · 265 阅读 · 0 评论 -
RocketMQ 源码分析 —— 为什么阅读 RocketMQ 源码?
为什么阅读RocketMQ源码?深入了解 MQ ,知其然知其所以然,如何实现高性能、高可用 最终一致性,是如何通过 MQ 进行实现 了解 Netty 在分布式中间件如何实现网络通信以及各种异常场景的处理 了解 MQ 消息存储,特别是磁盘 IO 部分 最重要的,希望通过阅读源码,在技术上的认知和能力上,有新的突破步骤[x] namesrv 启动 [ ] broker 启动 [x] producer 启动 [x] consumer 启动 [ ] 消息模型 [ ] 消息唯一编号原创 2020-06-03 23:55:20 · 264 阅读 · 0 评论 -
Spring Cloud Alibaba 消息队列 RocketMQ 入门
1. 概述本文我们来学习Spring Cloud Alibaba提供的Spring Cloud Stream RocketMQ组件,基于Spring Cloud Stream的编程模型,接入 RocketMQ 作为消息中间件,实现消息驱动的微服务。RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用...原创 2020-06-03 23:49:21 · 2521 阅读 · 1 评论 -
RocketMQ 极简入门
. 概述在开始搭建 RocketMQ 服务之前,我们先来对它做下简单的了解。RocketMQ是阿里巴巴在 2012 年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于 2017 年 9 月 25 日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和高可靠等特性近年来已经也被越来越多的国内企业使用。如下是 RocketMQ 产生的原因:淘宝内部的交易系统使用了淘宝自主研发的 Notify.原创 2020-06-03 23:31:08 · 330 阅读 · 0 评论 -
Spring Boot 消息队列 RocketMQ 入门
1. 概述如果胖友还没了解过分布式消息队列Apache RocketMQ,建议先阅读下艿艿写的《芋道 RocketMQ 极简入门》文章。虽然这篇文章标题是安装部署,实际可以理解成《一文带你快速入门 RocketMQ》,哈哈哈。考虑这是 RocketMQ 如何在 Spring Boot 整合与使用的文章,所以还是简单介绍下 RocketMQ 是什么?FROM《消息中间件 Apache RocketMQ》RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延...原创 2020-05-19 23:56:41 · 758 阅读 · 0 评论