RocketMQ5.0 Cluster集群部署详解及测试

1 篇文章 0 订阅
1 篇文章 0 订阅
MQ是一种跨进程通信机制,常用于异步解耦,例如用户注册后的邮件和短信通知。流量削峰场景如秒杀活动,通过消息队列避免下游系统超载。RocketMQ是Apache的分布式消息中间件,广泛应用于大规模场景。文章详细介绍了RocketMQ的环境搭建和基本操作。
摘要由CSDN通过智能技术生成

什么是MQ

MQ Message Queue )是一种跨进程的通信机制,用于传递消息。通俗点说,就是一个先进先出的数据结构

Cluster集群链接直通车:3v1c

MQ的应用场景

        异步解耦

        最常见的一个场景是用户注册后,需要发送注册邮件和短信通知,以告知用户注册成功。用户才能使用账号登录。 但是对于用户来说,注册功能实际只需要注册系统存储用户的账户信息后,该用户便可以登录,而后续的注册短信和邮件不是即时需要关注的步骤。

        所以实际当数据写入注册系统后,注册系统就可以把其他的操作放入对应的消息队列 MQ 中然后马上返回用户结果,由消息队列 MQ 异步地进行这些操作。
        
        异步解耦是消息队列 MQ 的主要特点,主要目的是减少请求响应时间和解耦。主要的使用场景就是将 较耗时而且不需要即时(同步)返回结果 的操作作为消息放入消息队列。同时,由于使用了消息队列MQ,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦合。
        
        流量削峰
        
        在秒杀或团队抢购活动中,由于用户请求量较大,导致流量暴增,秒杀的应用在处理如此大量的访问流量后,下游的通知系统无法承载海量的调用量,甚至会导致系统崩溃等问题而发生漏通知的情况。为解决这些问题,可在应用和下游通知系统之间加入消息队列 MQ
描述出路流程如下
  1. 用户发起海量秒杀请求到秒杀业务处理系统。
  2. 秒杀处理系统按照秒杀处理逻辑将满足秒杀条件的请求发送至消息队列 MQ
  3. 下游的通知系统订阅消息队列 MQ 的秒杀相关消息,再将秒杀成功的消息发送到相应用户。
  4.  用户收到秒杀成功的通知。

RocketMQ

        RocketMQ是阿里巴巴开源的分布式消息中间件,现在是Apache的一个顶级项目。在阿里内部使用非常广泛,已经经过了"11"这种万亿级的消息流转。

RocketMQ环境搭建

下载RocketMQ

下载地址:RocketMQ Apache Downloads

环境要求

  • Linux 64位操作系统
  • 64bit JDK 1.8+

安装RocketMQ

解压到安装目录

unzip rocketmq-all-5.0.0-bin-release.zip

mv rocketmq-all-5.0.0-bin-release rocketmq  

 2 修改启动参数配置

在bin目录下 runserver.sh、runbroker.sh不然会报insufficient memory
修改runserver.sh 中原有内存配置(两处),更改为

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改runbroker.sh 中原有内存配置,更改为

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

修改conf/broker.conf文件,添加配置

#xx.xxx.xx.xxx你的IP,如果是阿里云ECS也只能填写内网IP,公网IP无法识别。
namesrvAddr=xx.xxx.xx.xxx:9876
brokerIP1=xx.xxx.xx.xxx  
#文件中添加自动创建topic,如不需要请忽略。
autoCreateTopicEnable=true
#可指定mqbroker启动的端口
listenPort=8911

启动

nohup sh bin/mqnamesrv &

启动日志为:The Name Server boot success.serializeType=JSON 表示启动成功。

# 启动命令,保证地址以及端口能够访问,并且指定配置文件启动。
nohup sh bin/mqbroker -n xx.xxx.xx.xxx:9876 -c ./conf/broker.conf &

日志中显示:boot success 表示启动成功。

RocketMQ修改默认端口

在conf目录下添加namesrv.properties文件,文件中添加端口配置 listenPort=8876。

使用配置信息后台启动namesrv

nohup sh bin/mqnamesrv -c conf/namesrv.properties &

查看broker.log 日志

tail -f ~/logs/rocketmqlogs/broker.log 

测试RocketMQ

在bin目录下执行

export NAMESRV_ADDR=localhost:9876 ./tools.sh 
#发送消息
org.apache.rocketmq.example.quickstart.Producer
#接受消息
org.apache.rocketmq.example.quickstart.Consumer

关闭RocketMQ

bin/mqshutdown broker
bin/mqshutdown namesrv

RocketMQ控制台安装

1 下载

# 在git上下载下面的工程 rocketmq-console-1.0.0
https://github.com/apache/rocketmq-externals/releases
2 修改配置文件
# 修改配置文件 rocketmq-console\src\main\resources\application.properties
server.port=7777 #项目启动后的端口号
rocketmq.config.namesrvAddr=xx.xxx.xxx.xx:9876 #nameserv的地址,注意防火墙要开启
9876端口
3 打成 jar 包,并启动
# 进入控制台项目,将工程打成jar包
mvn clean package -Dmaven.test.skip=true
# 启动控制台
java -jar target/rocketmq-console-ng-1.0.0.jar
4 访问控制台
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值