栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第一章:初识RocketMQ

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第一章:初识RocketMQ

什么是MQ

MQ(Message Queue)它本质上是一个消息队列,既然是队列那么代表着先进先出(FIFO)的原则。只不过队列中存放的内容是一个被打包好的一个“消息”。它还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ是一种很常见的上下游的消息通信服务。使用MQ消息发送上游只需要依赖MQ,不用依赖其他服务。

能干什么 流量消峰

​ 如果订单系统最多能处理一万次订单,这个处理能力在正常情况下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作一下打到系统上,这个时候系统根本处理不了,还可能导致系统直接宕机。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比无法下单的体验要好。

应用解耦

​ 如一个电商应用中有订单系统、物流系统、库存系统、支付系统等。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出现了故障,都会造成下单操作异常。如果我们使用基于消息队列的方式后,比如物流系统因为发生故障,需要几分钟来修复。在这几分钟的时间里,物流系统要处理的内存缓存在消息队列中,用户下单操作还是可以正常完成。等到物流系统恢复后,继续处理订单信息即可,在这之中,用户也感受不到系统出来故障,提升系统的可用性。

异步处理

​ 如果一个A请求发送到服务器B然后完成,需要花费很长时间执行,但是A需要知道B什么时候可以执行完成,以前做法一般有两种方式:A过一会发一个请求,去询问B执行完了没;或者A提供一个callback api,B执行完之后调用api通知A服务。其实这两种方式都不太优雅,使用消息队列,可以很方便的解决这个问题,A调用B服务后,只需要监听B处理完成的消息,当B处理完后,会发送一条消息给MQ,MQ会将此消息转发给A服务。这样A服务既不用循环调用也不用提供回调API。同样B服务也不用做这些操作。

下载安装

RocketMQ 下载地址

unzip -d /opt/environment/  rocketmq-all-4.9.2-bin-release.zip
启动

启动NameServer

# 1.启动,进入到bin目录下
nohup sh ./mqnamesrv &
# 2.查看启动日志
tail -f ~/log/rocketmqlogs/namesrv.log

使用 jps 命令查看

启动Broker

#1.启动,进入到bin目录下
nohup sh ./mqbroker -n localhost:9876 &
#2.查看启动日志
tail -f ~/log/rocketmqlogs/broker.log

启动Broker问题描述:RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,可以编辑如下两哥配置文件,修改JVM的内存大小

# 编辑runbroker.sh 和 runserver.sh 修改默认JVM大小
vim runbroker.sh
vim runserver.sh
    runbroker.sh

    runserver.sh

    我们再次启动Broker

nohup sh ./mqbroker -n localhost:9876 &

查看日志可以看到已经启动成功

测试运行

我们开两个控制台窗口,一个模拟生产者一个窗口模拟消费者

生产者:

## 生产者
1.设置环境变量
export NAMESRV_ADDR=localhost:9876
2.发送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

消息发送运行效果图:

消费者:

## 消费者
1.设置环境变量
export NAMESRV_ADDR=localhost:9876
2.接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

消息接收运行效果图:

关闭RocketMQ
1.关闭Broker
sh bin/mqshutdown broker

2.关闭NameServer
sh bin/mqshutdown namesrv
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/720959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号