1 阿里巴巴开源RocketMQ4.x消息队列介绍
简介:阿里开源消息队列 RocketMQ4.x介绍和新概念讲解
-
Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件
-
特点
-
支持Broker和Consumer端消息过滤
-
支持发布订阅模型,和点对点,
-
支持拉pull和推push两种消息模式
-
单一队列百万消息、亿级消息堆积
-
支持单master节点,多master节点,多master多slave节点
-
任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式
-
消息失败重试机制、支持特定level的定时消息
-
新版本底层采用Netty
-
4.3.x支持分布式事务
-
适合金融类业务,高可用性跟踪和审计功能。
-
-
概念
-
Producer:消息生产者
-
Producer Group:消息生产者组,发送同类消息的一个消息生产组
-
Consumer:消费者
-
Consumer Group:消费同类消息的多个实例
-
Tag:标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
-
Topic:主题, 如订单类消息,queue是消息的物理管理单位,而topic是逻辑管理单位。一个topic下可以有多个queue,
默认自动创建是4个,手动创建是8个
-
Message:消息,每个message必须指定一个topic
-
Broker:MQ程序,接收生产的消息,提供给消费者消费的程序
-
Name Server:给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
-
Offset: 偏移量,可以理解为消息进度
-
commit log: 消息存储会写在Commit log文件里面
-
-
走读官网地址,学会如何学习新技术 http://rocketmq.apache.org/
-
学习资源
2 RocketMQ4.x本地源码部署(苹果系统底层是Unix系统)
简介:RocketMQ4.x本地快速部署
-
安装前提条件(推荐) 64bit OS, Linux/Unix/Mac (Windows不兼容) 64bit JDK 1.8+;
-
快速开始 http://rocketmq.apache.org/docs/quick-start/ 下载安装包:http://mirror.bit.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-source-release.zip
unzip rocketmq-all-4.4.0-source-release.zip
cd rocketmq-all-4.4.0/
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/apache-rocketmq
最终路径 rocketmq-all-4.4.0/distribution/target/apache-rocketmq
-
最新版本部署存在问题:
-
Please set the JAVA_HOME variable in your environment, We need java(x64)
-
解决:本地需要配置 JAVA_HOME 使用命令 vim ~/.bash_profile
-
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home"
export JAVA_HOME
CLASS_PATH="$JAVA_HOME/lib"
PATH=".$PATH:$JAVA_HOME/bin"
-
-
-
解压压缩包
-
启动nameServer
nohup sh bin/mqnamesrv &
-
查看日志 tail -f nohup.out (结尾:The Name Server boot success. serializeType=JSON 表示启动成功)
-
启动broker (-n指定nameserver地址,nameserver服务端口为9876, broker默认端口 10911)
nohup sh bin/mqbroker -n localhost:9876 &
-
关闭nameserver broker执行的命令
sh bin/mqshutdown broker sh bin/mqshutdown namesrv
-
使用 jps查看进程
-
-
验证是否成功
#设置名称服务地址 export NAMESRV_ADDR=localhost:9876 #投递消息 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer SendResult [sendStatus=SEND_OK, msgId= ... #消费消息 sh bin/tools.sh org.apache.rocketmq.example.quickstart.ConsumerConsumeMessageThread_%d Receive New Messages: [MessageExt...
第3集 源码安装RocketMQ4.x可视化控制台
简介:源码安装RocketMQ4.x可视化控制台
-
编译打包 mvn clean package -Dmaven.test.skip=true
- 存在问题,因为roccketmq-console 里面 pom.xml 版本问题
[ERROR] Failed to execute goal on project rocketmq-console-ng: Could not resolve dependencies for project org.apache:rocketmq-console-ng:jar:1.0.0: The following artifacts could not be resolved: org.apache.rocketmq:rocketmq-tools:jar:4.4.0-SNAPSHOT, org.apache.rocketmq:rocketmq-namesrv:jar:4.4.0-SNAPSHOT, org.apache.rocketmq:rocketmq-broker:jar:4.4.0-SNAPSHOT: Could not find artifact org.apache.rocketmq:rocketmq-tools:jar:4.4.0-SNAPSHOT -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
-
解决 <rocketmq.version>4.4.0-SNAPSHOT</rocketmq.version>
改为 <rocketmq.version>4.4.0</rocketmq.version>
-
target目录 通过java -jar的方式运行, 启动后是 8080端口
其他常见问题:
1)无法连接获取broker信息
修改配置文件,名称路由地址为 namesrvAddr,例如我本机地址为
src/main/resources/application.properties
rocketmq.config.namesrvAddr=127.0.0.1:9876
2)连接不成功
在阿里云,腾讯云或者虚拟机,记得检查端口号和防火墙是否启动
阿里云控制台有安全组,需要开放对应的端口
第4集 RocketMQ4.x可视化控制台讲解
简介:讲解新版的RocketMQ可视化管理后台
- 管理控制台地址 127.0.0.1:8080
测试中遇到的问题 maybe your broker machine memory too small 原因:磁盘空间不够
第5集 阿里云Linux服务器介绍和使用讲解
简介:阿里云服务器介绍和使用讲解
第6集 阿里云Linux服务器部署JDK8实战
简介:在阿里云服务器上安装JDK8和配置环境变量
-
地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
-
linux下使用wget下载jdk8:
进到目录/usr/local/software 配置环境变量
解压:tar -zxvf jdk-8u201-linux-x64.tar.gz 重命名:mv jdk1.8.0_201 jdk8 vim /etc/profile 加入 export JAVA_HOME=/usr/local/software/jdk8 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH 使用 source /etc/profile 让配置立刻生效
- windows 命令行工具 :putty
- windows 远程上传工具: wscp
- Mac 命令行工具: Item2
- Mac 远程上传工具 : Filezilla
第7集阿里云Linux服务器安装Maven实战
简介: Linux服务器下安装Maven
解压:tar -zxvf apache-maven-3.6.0-bin.tar.gz 重命名: mv apache-maven-3.6.0 maven vim /etc/profile export PATH=/usr/local/software/maven/bin:$PATH 立刻生效:source /etc/profile
第8集 阿里云服务器源码部署RocketMQ4.X(Linux系统)
简介:官方下载最新源码包,阿里云Linux服务器部署,解决内存不够问题
-
Liunx 解压安装 yum install unzip
-
常见问题
-
NameServer内存不够怎么处理
-
找到 runserver.sh 修改 JAVA_OPT
报错问题如下 [root@iZwz94sw188z3yfl7lpmmsZ apache-rocketmq]# sh bin/mqnamesrv Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release. Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ec800000, 2147483648, 0) failed; error='Cannot allocate memory' (errno=12) # # There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory. # An error report file with more information is saved as: # /usr/local/software/rocketmq-all-4.4.0/distribution/target/apache-rocketmq/hs_err_pid8993.log 解决如下 编辑 bin/runserver.sh: JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
-
-
Broker内存不足
-
找到 runbroker.sh 修改 JAVA_OPT
-
JAVA_OPT="${JAVA_OPT} -server -Xms528m -Xmx528m -Xmn256m"
-
-
第9集 阿里云源码安装RocketMQ4.X控制台(Linux系统)
简介:阿里云服务器安装RocketMQ控制台
-
上传源码包-》解压-》进入rocketmq-console目录-》 编译打包 mvn clean package -Dmaven.test.skip=true
务必修改下面两个,再进行编译打包
- 修改 pom.xml 版本号 (官方bug)
- 修改application.xml里面的nameserver地址
-
进入target目录 ,启动 java -jar rocketmq-console-ng-1.0.0.jar
-
守护进程方式启动 nohup java -jar rocketmq-console-ng-1.0.0.jar &
第10集 RocketMQ4.4.X源码导入IDEA
简介:将RocketMQ源码导入IDEA,为后续阅读源码做准备
- 下载源码,解压,导入即可