没有合适的资源?快使用搜索试试~ 我知道了~
rocketmq自用笔记第一部分
资源推荐
资源详情
资源评论











一、RocketMQ 介绍
1.数据结构是队列 先进先出
2.作用:应用解耦(同步变异步)、流量削峰、数据分发(动态订阅)
3.问题:MQ宕机怎么办?如何保证高可用
MQ进行异步远程调用,消息重复消费、丢失怎么办?发送接收消息顺序怎么保证?
A发送消息、B、C消费成功,D消费失败,如何保证消息一致性?
4.灵活可扩展性、2.海量消息堆积能力、3.支持顺序消息、4.多种消息过滤方式、5.支持事务消息、6.
回溯消费等常用功能。
二、安装RocketMQ
安装包: jdk-1.8版本和rocketmq-4.4.0版本并解压
安装目录介绍:
bin:启动脚本,包括shell脚本和CMD脚本
conf:实例配置文件 ,包括broker配置文件、logback配置文件等
lib:依赖jar包,包括Netty、commons-lang、FastJSON等
测试RocketMQ
1.启动NameServer*
nohup sh bin/mqnamesrv &
2.查看启动日志*
tail -f ~/logs/rocketmqlogs/namesrv.log
# 1.启动Broker
nohup sh bin/mqbroker -n localhost:9876 &
# 2.查看启动日志
tail -f ~/logs/rocketmqlogs/broker.log
问题描述:
RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改
JVM内存大小
# 编辑runbroker.sh和runserver.sh修改默认JVM大小
vi runbroker.sh
vi runserver.sh
参考设置:
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=320m"
发送消息
# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.使用安装包的Demo发送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
接收消息

各角色介绍
Producer:消息的发送者;
Consumer:消息接收者;
NameServer:管理Broker;
Broker:暂存和传输消息;
Topic:区分消息的种类;一个发送者可以发送消息给多个Topic;一个消息的接收者可以订阅多个Topic
消息
Message Queue:相当于是Topic的分区;用于并行发送和接收消息
三、集群搭建与特点 难点在Broker
NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。每个Broker与
NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。
Broker部署相对复杂,Broker分为Master与Slave,可以多主多从结构,主(可写可读)从读,主从之
间可以信息同步,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,
BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。
Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic
路由信息,并向提供Topic服务的Master建立长连接发送消息,且定时向Master发送心跳。
Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取
Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳。
Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。
集群模式
1.单Master模式,宕机则全完
2.多Master模式,单个master宕机期间,此机器上未被消费的消息不可订阅,影响消息实时性
3.多Master多Slave模式(异步),master宕机期间,磁盘损坏情况会丢失少量消息,消费者仍可以从
slave消费,可用性非常高
4.多Master多Slave模式(同步)常用,master宕机期间,消费者仍可以从slave消费,效率略降一点,
可用性非常高,但备用机不能自动切换成主机。
双主双从集群搭建
消息高可用采用2m-2s(同步双写)方式
1.启动NameServer,NameServer起来后监听端口,等待Broker、Producer、Consumer连上来,相
当于一个路由控制中心
# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
关闭RocketMQ
# 1.关闭NameServer
sh bin/mqshutdown namesrv
# 2.关闭Broker
sh bin/mqshutdown broker

2.Broker启动,跟所有的NameServer保持长连接,定时发送心跳包。心跳包中包含当前Broker信息
(IP+端口等)以及存储所有Topic信息。注册成功后,NameServer集群中就有Topic跟Broker的映射关
系。
3.收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息
时自动创建Topic。
4.Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,并从NameServer中获
取当前发送的Topic存在哪些Broker上,轮询从队列列表中选择一个队列,然后与队列所在的Broker建
立长连接从而向Broker发消息。
5.Consumer跟Producer类似,跟其中一台NameServer建立长连接,获取当前订阅Topic存在哪些
Broker上,然后直接跟Broker建立连接通道,开始消费消息。
虚拟机准备两台机器,在linux系统下搭建集群
以上ip根据你的虚拟机的实际情况配置
宿主机需要远程访问虚拟机的rocketmq服务和web服务,需要开放相关的端口号,简单粗暴的方式是
直接关闭防火墙
或者为了安全,只开放特定的端口号,RocketMQ默认使用3个端口:9876 、10911 、11011 。如果防
火墙没有关闭的话,那么防火墙就必须开放这些端口:nameserver 默认使用 9876 端口 、master 默
认使用 10911 端口 、slave 默认使用11011 端口
向Host添加信息
vim /etc/hosts
# nameserver
192.168.211.139 rocketmq-nameserver1
192.168.211.140 rocketmq-nameserver2
# broker
192.168.211.139 rocketmq-master1
192.168.211.139 rocketmq-slave2
192.168.211.140 rocketmq-master2
192.168.211.140 rocketmq-slave1
配置完成后,重启网卡
systemctl restart network
# 关闭防火墙
systemctl stop firewalld.service
# 查看防火墙的状态
firewall-cmd --state
# 禁止firewall开机启动
systemctl disable firewalld.service

环境变量配置,不用跑到bin目录下才能使用rocketmq命令
在profile文件的末尾加入如下命令
输入:wq! 保存并退出, 并使得配置立刻生效:
创建消息存储路径-->根据你自己的实际想存的地方创建文件夹
broker配置文件1
1.master1 服务器192.168.211.139
# 开放name server默认端口
firewall-cmd --remove-port=9876/tcp --permanent
# 开放master默认端口
firewall-cmd --remove-port=10911/tcp --permanent
# 开放slave默认端口 (当前集群模式可不开启)
firewall-cmd --remove-port=11011/tcp --permanent
# 重启防火墙
firewall-cmd --reload
vim /etc/profile
#set rocketmq
ROCKETMQ_HOME=/app/rocketmq-all-4.4.0-bin-release
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH
source /etc/profile
mkdir /app/rocketmq-all-4.4.0-bin-release/store
mkdir /app/rocketmq-all-4.4.0-bin-release/store/commitlog
mkdir /app/rocketmq-all-4.4.0-bin-release/store/consumequeue
mkdir /app/rocketmq-all-4.4.0-bin-release/store/index
/app/rocketmq-all-4.4.0-bin-release/conf/2m-2s-sync/broker-a.properties
#修改配置如下
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
剩余24页未读,继续阅读
资源评论


我家有大脸
- 粉丝: 31
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 公益慈善电子商务平台项目建设方案.doc
- 网络应用基础在线考核.doc
- 三菱PLC与MCGS组态触摸屏在广场喷泉控制系统的集成应用解析
- 基于51单片机的GPS定位系统的设计.doc
- 网络公司电话销售话术.doc
- 系统集成项目管理工程师9大知识体系汇总.doc
- 综合布线标识设计方案.pptx
- 国家开放大学电大《思想道德修养与法律基础》网络核心课终结性考试三套试题及答案.docx
- 商业银行大数据建设规划.docx
- 数字电路后端设计逻辑综合.ppt
- 虚拟化方案-供参考.doc
- 2023年计算机二级语言笔试试卷.doc
- 秦皇岛二中校园网络视频直播方案成功案例.docx
- 公司项目管理手册实施细则.doc
- 网络营销概要.pptx
- 六自由度系统集成设计(一)PPT课件.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
