RocketMQ 源码阅读
文章平均质量分 70
从零开始阅读 RocketMQ
wenniuwuren
Winter is coming
展开
-
RocketMQ 源码阅读 ---- 消息消费(普通消息)
RocketMQ Consumer 消费拉取的消息的方式有两种1.Push方式:rocketmq 已经提供了很全面的实现,consumer 通过长轮询拉取消息后回调 MessageListener 接口实现完成消费,应用系统只要重写 MessageListener的方法完成业务逻辑即可2.Pull方式:完全由业务系统去控制,定时拉取消息,指定队列消费等等,当然这里需要业务系统去根据自己的业务需求去实现下面介绍 push 方式(long-polling长轮询方式实...原创 2020-06-09 21:12:45 · 821 阅读 · 0 评论 -
RocketMQ 源码阅读 ---- 消息存储(普通消息)
零、关键词解释cache 是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到**加快访问速度**的作用。buffer 的主要目的进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,以**减少响应次数**(比如从网上下电影,你不能下一点点数据就写一下硬盘,而是积攒一定量的数据以后一整块一起写,不然硬盘都要被你玩坏了)。 --知乎数据复制:当我们在某段代码中往某个文件写入一段字符串的时候,实际发生了什么呢?数据从 Application Memo...原创 2020-06-09 21:10:28 · 536 阅读 · 0 评论 -
RocketMQ 源码阅读 ---- 顺序消息
一、概述顺序消息的大致原理是发送的时候,比如同一个订单 id 的发送到同一个 queueId 中,如下单、支付、扣库存这个流程需要保证同一个订单 id 消息有序才能正常执行。在消费的时候,也只能有一个 consumer 并且单线程从这个 queue 中消费,这样才能保证消息消费顺序。 二、源码解析在顺序消息的 produer 中,需要有一个选择队列的算法,来确定某个规则下的消息...原创 2018-09-04 21:44:35 · 770 阅读 · 0 评论 -
RocketMQ 源码阅读 ---- 延时消息
一、概念解析定时消息:在某个时间点投递消息,比如 2018-07-09 00:00:00 投递消息延时消息:在过了多少时间后,投递消息,比如 10 秒后投递消息(开源版本的 RocketMQ 只提供固定几个时间点的延时消息) 二、测试用例package org.apache.rocketmq.example.quickstart;import org.apache.roc...原创 2018-08-24 17:41:29 · 1121 阅读 · 1 评论 -
RocketMQ 源码阅读 -- 环境搭建
一、 NameServer 和 Broker 启动根据官网的 quik start 指引,我们可以看到在 distribution/bin 目录下的 mqnamesrv 和 mqbroker 是启动的关键。例如 mqnamesrv #!/bin/sh# Licensed to the Apache Software Foundation (ASF) under one or more# c...原创 2018-07-02 15:44:26 · 682 阅读 · 0 评论 -
RocketMQ 源码阅读 ---- Tag 过滤
零、简介RocketMQ 消息过滤分成 TAG过滤和 SQL Filter 过滤,SQL Filter是在服务端处理,会影响 MQ 的性能一般不建议使用,语法比较灵活,实现方式也相对复杂一些。Tags 过滤实现比较简单,在客户端实现。这样就有一个问题,如果某个 TOPIC 消息非常多,主要消费这个 TOPIC 应用A要是 500 台,另一个只想消费部分 Tag 消息的应用B只有 2 台,500...原创 2019-10-11 14:53:45 · 605 阅读 · 0 评论