目录
1. 消息队列功能介绍
1.1 应用解耦
多个低错误率的子系统强耦合在一起,会得到一个高错误率的整体系统。使用MQ将应用解耦,可以提高整体系统的容错率, 提高系统可用性。
1.2 流量消峰
通过利用消息队列,把大量的请求暂存起来,分散到相对长的一段时间内处理,能大大提高系统的稳定性和用户体验。
1.3 消息分发
数据的产生方只需要把各自的数据写入一个消息队列即可,数据使用方根据各自需求订阅感兴趣的数据,不同数据团队所订阅的数据可以重复也可以不重复,互不干扰,也不必和数据产生方关联。
2. 快速上手RocketMQ
2.1 Rocket MQ下载,安装和配置
RocketMQ的Binary版直接从官网找到下载链接(http://rocketmq.apache.org/dowloading/releases/)
系统要求:64bit的Linux、Unix或Mac。Java版本大于等于JDK1.8。
> unzip rocketmq-all-4.2.0-bin-release.zip -d ./rocketmq-all-4.2.0-binls
> cd rocketmq-all-4.2.0-bin/
> ls
> LICENSE NOTICE README.md benchmark/ bin/ conf/ lib/
LICENSE、NOTICE和README.md包括一些版权声明和功能说明信息;
benchmark里包括运行benchmark程序的shell脚本;
bin文件夹里含有各种使用RocketMQ的shell脚本(Linux平台)和cmd脚本(Windows平台),比如常用的启动NameServer的脚本mqnamesrv,启动Broker的脚本mqbroker,集群管理脚本mqadmin等;
conf文件夹里有一些示例配置文件,包括三种方式的broker配置文件、logback日志配置文件等,用户在写配置文件的时候,一般基于这些示例配置文件,加上自己特殊的需求即可;
lib文件夹里包括RocketMQ各个模块编译成的jar包,以及RocketMQ依赖的一些jar包,比如Netty、commons-lang、FastJSON等。
2.2 启动消息队列服务
启动单机的消息队列服务比较简单,不需要写配置文件,只需要依次启动本机的NameServer和Broker即可。
启动NameServer:
> nohup sh bin/mqnamesrv &
> tail -f ~/Logs/rocketmqLogs/namesrv.Log
The Name Server boot success...
启动Broker:
> nohup sh bin/mqbroker –n localhost:9876&
> tail -f ~/Logs/rocketmqLogs/broker.Log
The broker[%s, 192.168.0.233:10911] boot success...
2.3 用命令行发送和接收消息
用命令行发送和接收消息,就是运行官方写好的demo程序
运行示例程序,发送和接收消息:
> 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.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
2.4 关闭消息队列
消息队列被启动后,如果不主动关闭,则会一直在后台运行,占用系统资源。我们有专门用来关闭NameServer和Broker的命令。
关闭NameServer和Broker:
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
节选自《RocketMQ实战与原理解析》