这是本人学习的总结,主要学习资料如下
主要有四个角色,NameServer,Broker Cluster,Consumer和Producer。
````Consumer和Producer```很容易理解,就是消费者和生产者。
NameServer是提供注册的服务,其他的节点想要加入到一个MQ的架构中都需要在NameServer中注册,同时也需要通过NameServer获取服务。
Broker Cluster则是提供消息的传输和存储。

tag可能有苹果手机,谷歌手机等。producer发送消息是向一个topic发送消息,consumer也是从一个topic接受消息。producer或者一个consumer就是一个服务节点。可能业务量过大,一个节点处理不过来,那就可以增加节点处理相同的业务,那这些处理相同业务的节点就可以分为一个group。producer往往有多个consumer。为了提高并发率,消息到了topic会被分发到多个message queue中。同一组的每个消费者有自己的一个MQ,他们消费消息时就可以并发进行。consumerOffset用来表示已经消费的消息个数,
从官网下载最新版本的Binary Package即可,目前是5.1.0。
根据官网手册操作即可https://rocketmq.apache.org/docs/quickStart/01quickstart/。
我自己文件放到/Library/rocketmq-all-5.1.0-bin-release下。现在就算是安装好了,随时可以进入目录用命令行启动项目。
架构中说过RocketMQ有四个部分分别是broker用来保存和持久化信息,server用来注册节点,还有就是producer和consumer。
下面会分别启动这四个应用。
在进入编译好项目的/bin目录下,可以用下面指令启动项目和查看日志
nohup sh mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log
server的默认端口号是9876
显示下面的内容表示启动成功
MacBook-Pro:bin user$ tail -f ~/logs/rocketmqlogs/namesrv.log
2023-03-16 21:04:56 INFO main - The Name Server boot success. serializeType=JSON
2023-03-16 21:04:56 INFO NettyClientScan_thread_1 - createChannel: begin to connect remote host[192.168.2.3:9876] asynchronously
2023-03-16 21:04:56 INFO NettyClientWorkerThread_1 - NETTY CLIENT PIPELINE: CONNECT UNKNOWN => 192.168.2.3:9876
2023-03-16 21:04:56 INFO NettyClientScan_thread_1 - createChannel: connect remote host[192.168.2.3:9876] success, AbstractBootstrap$PendingRegistrationPromise@25cfa9a3(success)
2023-03-16 21:04:56 INFO NettyServerCodecThread_1 - NETTY SERVER PIPELINE: channelRegistered 192.168.2.3:50806
2023-03-16 21:04:56 INFO NettyServerCodecThread_1 - NETTY SERVER PIPELINE: channelActive, the channel[192.168.2.3:50806]
之后到bin目录启动文件,返回值是进程号PID
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
[1] 59852
发现日志开始打印很多东西,往下滑,会看到当前broker成功注册的消息,那broker就启动成功。
2023-03-16 22:16:08 INFO main - brokerConfigPath=
2023-03-16 22:16:08 INFO main - rocketmqHome=/Library/rocketmq-all-5.1.0-bin-release
2023-03-16 22:16:08 INFO main - namesrvAddr=localhost:9876
2023-03-16 22:16:08 INFO main - listenPort=6888
2023-03-16 22:16:08 INFO main - brokerIP1=192.168.2.3
2023-03-16 22:16:08 INFO main - brokerIP2=192.168.2.3
2023-03-16 22:16:08 INFO main - brokerPermission=6
2023-03-16 22:16:08 INFO main - defaultTopicQueueNums=8
2023-03-16 22:16:08 INFO main - autoCreateTopicEnable=true
2023-03-16 22:16:08 INFO main - clusterTopicEnable=true
# 省略中间内容
2023-03-16 22:16:13 INFO brokerOutApi_thread_1 - Registering current broker to name server completed. TargetHost=localhost:9876
另外查看进程号也能验证broker启动成功,看第一行的信息
$ ps -ef | grep 59852501 59852 24009 0 10:16下午 ttys001 0:00.01 sh bin/mqbroker -n localhost:9876 --enable-proxy501 59856 59852 0 10:16下午 ttys001 0:00.01 sh /Library/rocketmq-all-5.1.0-bin-release/bin/runserver.sh -Drmq.logback.configurationFile=/Library/rocketmq-all-5.1.0-bin-release/conf/rmq.proxy.logback.xml org.apache.rocketmq.proxy.ProxyStartup -n localhost:9876 -pm local501 62270 24009 0 10:22下午 ttys001 0:00.00 grep 59852
因为broker默认会占用8g内存,某些情况下会因为内存不足而启动失败,如果需要修改内存大小需要到/bin/runbroker.sh修改指令。
vim /bin/runbroker.sh
在99行的位置,
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
本地启用我就设成512M
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m"
启动服务
# 启动namesrv服务
nohup sh bin/mqnamesrv &
# 查看日志
tail -f ~/logs/rocketmqlogs/namesrv.log
# 启动broker服务
nohup sh bin/mqbroker &
# 查看日志
tail -f ~/logs/rocketmqlogs/broker.log
关闭服务
# 关闭namesrv服务
sh bin/mqshutdown namesrv
# 关闭broker服务
sh bin/mqshutdown broker
管理页面让我们更直观方便地管理观察MQ。
到https://github.com/apache/rocketmq-dashboard下载项目。
这是一个Maven管理的java项目,我们先修改配置,指定server地址,因为这里是本地启动的server所以就是本地地址。
配置文件是/src/main/resources/application.yml ,修改里面的配置项,指定为本地地址
rocketmq:config:namesrvAddr: localhost:9876
之后进入项目根目录打包
cd /Users/user/Downloads/rocketmq-dashboard-master
mvn package
启动打包好的jar文件
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
打开网页localhost:8080
