简介

Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件

特点

  • 在高压下1毫秒内响应未延迟超过99.6%。
  • 适合金融类业务,高可用性跟踪和审计功能。
  • 支持发布订阅模型,和点对点
  • 支持拉pull和推push两种消息模式
  • 单一队列百万消息
  • 支持单master节点,多master节点,多master多slave节点

概念

  • Producer:消息生产者

  • Producer Group:消息生产者组,发送同类消息的一个消息生产组

  • Consumer:消费者

  • Consumer Group:消费同个消息的多个实例

  • Tag:标签,子主题(二级分类),用于区分同一个主题下的不同业务的消息

  • Topic:主题(发布点阅)

  • Message:消息

  • BrokerMQ程序,接收生产的消息,提供给消费者消费的程序
    Name Server:给生产者和消费者提供路由信息,提供轻量级的服务发现和路由

学习资料

官网

阿里中间件团队博客

分布式开放消息系统(RocketMQ)的原理与实践

安装和部署

前提环境

  • 64bit OS, Linux/Unix/Mac
  • 64bit JDK 1.8+

Getting Started

Getting Started

下载安装包

此二进制安装包可直接解压运行

创建安装目录(/export/servers是我存放服务端应用的目录):

[root@izbp18kejuoa2rnvbzgg6tz ~]# cd /export/servers
[root@izbp18kejuoa2rnvbzgg6tz servers]# mkdir rocketmq

 

下载安装包到此目录并解压:

[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-bin-release.zip
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# unzip rocketmq-all-4.2.0-bin-release.zip

 

如果找不到 unzip命令,则使用 yum install unzip

启动

进入 bin目录启动 NameServer(后台启动):

[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# cd bin
[[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup sh mqnamesrv &
[3] 24383
[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup: ignoring input and appending output to ‘nohup.out’

 

查看启动日志:

[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup: ignoring input and appending output to ‘nohup.out’
tail -f nohup.out
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (131072k) is equal to or greater than the entire heap (131072k).  A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (131072k) is equal to or greater than the entire heap (131072k).  A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: MaxNewSize (131072k) is equal to or greater than the entire heap (131072k).  A new max generation size of 131008k will be used.
The Name Server boot success. serializeType=JSON

 

最后一行显示 The Name Server boot success则表示启动成功,按 ctrl C退出会话

如果报错如下:

VM warning: INFO: OS::commit_memory(0x00000006c0000000, 2147483648, 0) faild; error=’Cannot allocate memory’ (errno=12)

 

这是因为服务器内存不够,无法分配。你需要修改启动脚本 bin/runserver.sh,bin/runbroker.sh中的一行内容:

runserver.sh:JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m" 

 

这些 JVM运行参数可根据应用场景自行设置。

启动成功后,通过 jps命令(java提供的命令)可查看正在运行的java应用程序:

[root@izbp18kejuoa2rnvbzgg6tz bin]# jps
21636 NamesrvStartup
21723 Jps

 

接着启动 broker

[root@izbp18kejuoa2rnvbzgg6tz bin]# nohup sh mqbroker -n 172.0.0.1:9876 &

 

ctrl c退出会话

查看进程:

[root@izbp18kejuoa2rnvbzgg6tz bin]# jps
21921 BrokerStartup
21970 Jps
21636 NamesrvStartup

 

关闭

你可以使用 bin/mqshutdown broker,bin/mqshutdown namesrv来关闭


可视化控制台

不像 activemq,启动后自带web控制台,rocketmq需自己下载可视化web控制台插件来查看运行状况。

插件下载地址,我将它下载到 rocketmq目录下并解压

[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# wget https://github.com/apache/rocketmq-externals/archive/master.zip
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# unzip rocketmq-externals-master.zip
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# rm -rf rocketmq-externals-master.zip

 

将此项目中的 rocketmq-console文件夹(SpringBoot开发的web应用,即我们所需的rocketmq控制台)移出来:

[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# cd rocketmq-externals-master
[root@izbp18kejuoa2rnvbzgg6tz rocketmq-externals-master]# mv rocketmq-console ..
[root@izbp18kejuoa2rnvbzgg6tz rocketmq-externals-master]# cd ..
[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# ls
benchmark  bin  conf  lib  LICENSE  NOTICE  README.md  rocketmq-console

 

启动该项目前需编译打包该项目:

编译该项目前需安装 maven,并且可能需要联网下载依赖(你也可以在宿主机上打包好后上传到虚拟机上)

[root@izbp18kejuoa2rnvbzgg6tz rocketmq]# cd rocketmq-console
[root@izbp18kejuoa2rnvbzgg6tz rocketmq-console]mvn clean package -Dmaven.test.skip=true

 

启动该项目:

[root@izbp18kejuoa2rnvbzgg6tz rocketmq-console]# java -jar target/rocketmq-console-ng-1.0.0.jar

 

接着访问 192.168.25.136:8080192.168.25.136是这台虚拟机的内网IP)即可看到对应本机rocketmq服务的可视化控制台:

 

更多学习资料上白玉搜一搜搜索下载

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐