本文RocketMQ系列第四篇,主要介绍RocketMQ集群及如何部署自动容灾切换的 RocketMQ-on-DLedger Group。 ? 在一台虚拟机上安装RocketMQ 在RocketMQ入坑系列第一篇中,已经有安装方法了,很简单,这里不再赘述。 【RocketMQ系列】RocketMQ中的角色详解及实操基本使用 2. RocketMQ-Console 为了能够方便的查看RocketMQ的集群状态,我们安装一下RocketMQ-Console。 代码仓库 「GitHub」 github.com/xblzer/JavaJourney 往期推荐 【RocketMQ系列(三)】基于RocketMQ的分布式事务 RocketMQ入坑系列(二)近距离感受 RocketMQ如何收发消息 RocketMQ入坑系列(一)角色介绍及基本使用
有序性分类 根据有序范围的不同,RocketMQ可以严格地保证两种消息的有序性:分区有序与全局有序。 2、在RocketMQ可视化控制台中手动创建Topic时指定Queue数量。 3、使用mqadmin命令手动创建Topic时指定Queue数量。 配置文件在RocketMQ安装目录下的conf目录中。 RocketMQ中事务消息的Producer充当着TM。 RM Resource Manager,资源管理器。 消息重复在RocketMQ中是无法避免的问题。 消息重复在一般情况下不会发生,当出现消息量大、网络抖动,消息重复就会成为大概率事件。
还有个重要功能是挡住前端的数据洪峰,保证后端系统的稳定性,这就要求消息中间件具有一定的消息堆积能力 rocket相比其他mq的优点 能够保证严格的消息顺序 提供丰富的消息拉取模式 实时的消息订阅机制 亿级消息堆积能力 rocketmq 使用同步复制 可以保证消息100%不丢失(但是性能下降10%) rocketmq节点 Name Server Broker 部署相对复杂,Broker 分为 Master 与 Slave 一个 Master 由于 RocketMQ 所有消息都是持久化的,所以如果按照优先级来排序,开销会非常大,因此 RocketMQ 没有特意支持消息优先级,但是可以通过变通的方式实现类似功能,即单独配置一个优先级高的队列,和一个普通优先级的队列 每个优先级可以用不同的 topic 表示,发消息时,指定不同的 topic 来表示优先级,这种方式可以解决绝大部分的优先级问题,但是对业务的优先级精确性做了妥协 刷盘方式 rocketmq 建议使用多主多从同步复制
在实际项目中已经领教过RocketMQ的强大,本人计划写一个RocketMQ实战系列,将涵盖RocketMQ的简介,环境搭建,初步使用、API详解、架构分析、管理员集群操作等知识。 What is RocketMQ? 1.要知道RocketMQ原生就是支持分布式的,而ActiveMQ原生存在单点性。 2.RocketMQ可以保证严格的消息顺序,而ActiveMQ无法保证! (注意RocketMQ只有一种模式,即发布订阅模式。) 进程与端口 第八步:RocketMQ Console 把rocketmq-console.war部署到Tomcat下即可。 ? 解压WAR包 ?
RocketMQ快速入门 RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。 192.168.25.138 rocketmq-nameserver2 # broker 192.168.25.135 rocketmq-master1 192.168.25.135 rocketmq-slave2 ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq-all-4.4.0-bin-release PATH=$PATH:$ROCKETMQ_HOME/bin export /rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store =E:\\RocketMQ\\data\\rocketmq\\dataDir\\index # checkpoint文件路径 storeCheckpoint=E:\\RocketMQ\\data\\rocketmq
RocketMQ 基本概念 消息模型 RocketMQ由Producer、Broker、Consumer组成 Producer 生产消息,同步/异步发送,顺序/单向发送。 为什么RocketMQ没有这么做 因为RocketMQ 是java 实现的,要是缓存过多消息,GC是很严重的问题。 所以多文件并发写入,性能比RocketMQ好。 RocketMQ只有一个commitLog物理文件,单文件写入,性能比KafKa差。 支持Slave 自动切换为Master;开源版本RocketMQ不支持Slave自动切换为Master,而阿里云版本RocketMQ支持自动切换特性。 不支持分布式事务消息 RocketMQ支持分布式事务 消息过滤 kafka不支持代理端消息过滤 RocketMQ支持代理端消息过滤 KafKa不支持延迟消息,而RocketMQ支持 重点 ActiveMQ
---- RocketMQ的安装(单节点) 接下来,我们从无到有 ,搭建一个RocketMQ的环境吧,单节点走起 。 ---- JDK 和 RocketMQ RocketMQ 是个纯java、分布式、队列模型的开源消息中间件,所以JDK必不可少了。 RocketMQ 版本及JDK的对应关系 RocketMQ 版本及JDK的对应关系 : 戳这里 ? 将下载好的 rocketmq-all-4.3.2-bin-release.zip 使用unzip命令,解压到 /usr/local/rocketmq目录下 如下所示 [root@artisan rocketmq /rocketmq/rocketmq-all-4.3.2-bin-release export PATH=$ROCKETMQ_HOME/bin:$PATH 第二步: 刷新环境变量 source /etc
其吞吐量较 Kafka 与 RocketMQ 要低,且由于其不是 Java 语言开发,所以公司内部对其实现定制化开发难度较大。 RocketMQ:RocketMQ 是使用 Java 语言开发的一款 MQ 产品。经过数年阿里双 11 的考验,性能与稳定性非常高。其没有遵循任何常见的 MQ 协议,而是使用自研协议。 对于 Spring Cloud Alibaba,其支持 RabbitMQ、Kafka,但提倡使用 RocketMQ。 二、RocketMQ 概述 1、简介 RocketMQ 是一个统一消息引擎、轻量级数据处理平台。RocketMQ是一款阿里巴巴开源的消息中间件。 2016 年双十一,RocketMQ 承载了万亿级消息的流转,跨越了一个新的里程碑。
RocketMQ详解(2)——RocketMQ核心概念 一. RocketMQ专业术语 Producer 消息生产者,负责产生消息,一般由业务系统负责产生消息。 RocketMQ的消费方式 广播消息 一条消息被多个Consumer消费,即使这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每一个Consumer 在JMS规范中,类似于P2P模型,但是RocketMQ的集群消费功能大于等于JMS的P2P消费。 因为集群消费模式下,RocketMQ单个Consumer Group内的消费类似于P2P,但是一个Topic/Queue可以被多个Consumer Group消费。 在RocketMQ中,该顺序主要指局部顺序,即一类消费为满足顺序性,必须Producer单线程发送,且发送到同一个队列,这样Consumer就可以按照Producer的发送顺序来消费消息。
【RocketMQ】003-Windows 安装 RocketMQ 一、准备工作 1、环境要求 64位JDK 1.8+; Maven 3.2.x; 64位操作系统系统,本文档在Windows上安装 2、 RocketMQ 的环境变量值根据实际目录设置。 变量名:ROCKETMQ_HOME 变量值:D:\MySoft\Environment\RocketMQ\rocketmq-all-5.1.0-bin-release 二、启动 1、启动 NameServer 功能 RocketMQ 自带了发送与接收消息的脚本 tools.cmd,用来验证 RocketMQ 的功能是否正常。 四、RocketMQ 控制台 第一步:克隆项目到本地 https://github.com/apache/rocketmq-dashboard 第二步:使用 IDEA 打开项目 非必要,直接使用 maven
【RocketMQ】005-Docker 部署 RocketMQ 一、部署 1、拉取镜像 MQ 镜像 docker pull rocketmqinc/rocketmq:latest 可视化平台镜像 docker rocketmqinc/rocketmq: 这是指定要使用的Docker镜像的名称。在这里,使用的是RocketMQ官方提供的镜像,该镜像用于运行RocketMQ。 --name rocketmq_broker: 这是一个选项,用于为容器指定名称,这里将容器命名为"rocketmq_broker"。 rocketmqinc/rocketmq: 这是指定要使用的Docker镜像的名称。在这里,使用的是RocketMQ官方提供的镜像,该镜像用于运行RocketMQ。 综上所述,该命令将创建一个名为"rocketmq_console"的Docker容器,并在该容器中以后台模式运行RocketMQ控制台。
RocketMQ实战教程之RocketMQ安装这里实例采用centos系统天翼云为例,分别采用传统安装以及Docker安装的方式来进行RocketMQ的安装.JDK8我这边已经安装配置好了,这里就不在赘述 jdk: https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 快速安装下载RocketMQ 安装包上传到虚拟机、服务器上安装unzip: yum install unzip -y使用该命令: unzip rocketmq-all-5.2.0-bin-release.zip 进行安装1、启动NameServer 安装完RocketMQ包后,我们启动NameServer### 后台启动namesrv(这里建议前台启动方便看日志报错信息)$ nohup sh bin/mqnamesrv & ### 验证namesrv ' (errno=12) - 解决方案如下: vim runbroker.sh - 图片 工具测试消息收发在进行工具测试消息收发之前,我们需要告诉客户端NameServer的地址,RocketMQ
本文参考<RocketMQ技术内幕> 消息存储 不会永久保存消息文件,而是启用文件过期策略,在磁盘空间不足或在凌晨4点删除过期文件,文件默认保存72小时,删除时不会判断该文件上的消息是否被消费 fileName是以创建时的时间戳命名的,固定的单个IndexFile文件大小约为400M,一个IndexFile可以保存2000W个索引,IndexFile的底层存储设计为在文件系统中实现HashMap结构,故rocketmq 该消息的主题名称为重试主题,其他属性与原先的消息保持相同 在存入commitlog文件之前,如果消息的延迟级别大于0,替换消息的主题为定时任务主题 SCHEDULE_TOPIC_XXX,队列ID为延迟级别减1 顺序消费 ROCKETMQ master汇报 消息消费者向master拉取消息时,如果消息消费者内存中存在消息消费进度时,master会尝试跟新消息消费进度 读写分离 master负责读写,slave可以为读,也可以什么都不做 RocketMQ
在vm中创建虚拟机后 关闭防火墙 systemctl stop firewalld 开启nameserver服务 以及 broker服务 [root@192 rocketmq-all-4.9.0-bin-release ]# sh bin/mqnamesrv & [root@192 rocketmq-all-4.9.0-bin-release]# sh bin/mqbroker -n localhost:9876 & 在本机上启动rocketmq-dashbroad 更改server.port=7000以及对应的nameserver端口(nameserver会定时拉取broker的路由信息) 之后编译打包 mvn clean
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.zip cd rocketmq-all-4.2.0/ mvn -Prelease-all -DskipTests clean install -U 构建成功后 进入到目录 : cd distribution/target/apache-rocketmq 启动 NameServer ---- nohup sh bin RocketMQ 提供了多种方法来实现这一点。 接受消息 ---- sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer 关闭服务器 ---- sh bin/mqshutdown
RocketMQ消费端有两种获取消息的方式,Push方式和Pull方式。 0人点赞 RocketMQ 作者:九点半的马拉 链接:https://www.jianshu.com/p/68123e7bf03e 来源:简书 著作权归作者所有。
安装 rocketmq 控制台 拉取镜像 docker pull pangliang/rocketmq-console-ng 启动容器 docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr ={本地外网 IP}:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t pangliang/rocketmq-console-ng 其它 参考文档 Docker 安装 Rocketmq 服务[1] 主要参考这位博主的文章,写的很好,但是实际安装时遇到几个坑,在此基础上优化一版。 加了一 broker.conf 配置,以及换了 rocketmq-console-ng 的镜像源,原文的有点老,有些功能不支持。 2.rocketmq 连接不上 broker 问题解决[2] 参考资料 [1] Docker 安装 Rocketmq 服务: https://blog.csdn.net/javahighness/article
事务消息:RocketMQ提供类似X/Open XA的分布事务功能,通过消息队列RocketMQ的事务消息能达到分布式事务的最终一致。 注册信息写入注册系统成功后,再发送消息至消息队列RocketMQ。消息队列RocketMQ会马上返回响应给注册系统,注册完成。用户可立即登录。 用户只需在注册页面等待注册数据写入注册系统和消息队列RocketMQ的时间,即等待55 ms即可登录。 异步解耦是消息队列RocketMQ的主要特点,主要目的是减少请求响应时间和解耦。 注册系统将注册信息写入注册系统之后,发送一条注册成功的消息到消息队列RocketMQ,邮件通知系统订阅消息队列RocketMQ的注册消息,做相应的业务处理,发送注册成功或者失败的邮件。 秒杀处理系统按照秒杀处理逻辑将满足秒杀条件的请求发送至消息队列RocketMQ。 下游的通知系统订阅消息队列RocketMQ的秒杀相关消息,再将秒杀成功的消息发送到相应用户。
MQ基础概念: rocketMQ:RocketMQ 是什么?Github 上关于 RocketMQ 的介绍:RcoketMQ 是一款低延迟、高可靠、可伸缩、易于使用的消息中间件。 broker:1、概念:rocketMQ中负责接收生产者消息、给消费者发送消息的组件。 Message:1、概念:Message 是消息的载体。一个 Message 必须指定 topic。 )方法启动一个producer实例 producer.start(); //发送10条消息到Topic为TopicTest,tag为TagA,消息内容为“Hello RocketMQ Message("TopicTest",// topic "TagA",// tag ("Hello RocketMQ
01 — 安装RocketMQ RocketMQ集群的部署可以分为很多种模式: nameserver可以多个; broker也可以部署多个:两主两从、两主无从等,本文采用两主无从的模式; # 下载 wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.6.0/rocketmq-all-4.6.0-bin-release.zip # 解压 unzip rocketmq-all-4.6.0-bin-release.zip # 重命名 mv rocketmq-all-4.6.0-bin-release/ rocketmq # 配置环境变量,三个节点都需要配置 vim .bash_profile export ROCKETMQ=/opt/install/rocketmq/ export PATH=$PATH:$ROCKETMQ/bin source .bash_profile ://github.com/apache/rocketmq-externals.git cd rocketmq-externals-maste/rocketmq-console/src/main/resources