这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点
- 1、能够保证严格的消息顺序
- 2、提供丰富的消息拉取模式
- 3、高效的订阅者水平扩展能力
- 4、实时的消息订阅机制
- 5、亿级消息堆积能力
搭建一个双节点的RocketM
环境背景:
- 虚拟机:vmware12
- 操作系统:centos6.5
- 内存:1G RAM
- 硬盘:20G ROM
在WMWare虚拟机下实现,实现两台IP和资源的服务主机,IP分别是
192.168.1.12,192.168.1.13,分别在这两台机器的hosts文件中添加。
1 | bash复制代码vim /etc/hosts |
下载安装RocketMQ
分别将alibaba-rocketmq-x.x.x.tar.gz使用rz命令上传到两台机器,也可以直接官网在线下载。
将RocketMq解压到/usr/local目录下:
1 | perl复制代码root@localhost local]#tar -zxvf alibaba-rocketmq-x.x.x.tar.gz -C /usr/local/ |
建立alibaba-rocketmq到rocketmq软连接,如下:
1 | perl复制代码[root@localhost local]#ln -s alibaba-rocketmq rocketmq |
创建rocketmq存储的相关路径
1 | perl复制代码[root@localhost local]# mkdir /usr/local/rocketmq/store |
分别配置两台机器的broker-a.properties和broker-b.properties文件
调整相关RocketMQ的broker的配置
1 | ini复制代码[root@localhost local]# vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties |
启动nameserver
1 | java复制代码[root@singlenode rocketmq]# cd /usr/local/rocketmq/bin/ |
启动broker
1 | java复制代码cd /usr/local/rocketmq/bin |
部署RocketMq管理界面
首先下载rocketmq-console.war和tomcat(地址github.com/apache/rock…
修改config.properties文件
1 | ini复制代码rocketmq.namesrv.addr=192.168.1.12:9876;192.168.1.13:9876 |
启动Tomcat,访问
http://192.168.1.128:8080/rocketmq-console
设定环境变量:
export NAMESRV_ADDR=192.168.169.128:9876\;192.168.169.129:9876
运行测试:
1 | 复制代码bash tools.sh com.alibaba.rocketmq.example.quickstart.Producer |
关闭防火墙
1 | csharp复制代码[root@singlenode bin]#service iptables status |
如果是centos7以上使用
1 | arduino复制代码systemctl stop firewalld.service |
RocketMq的角色
- producer
- consumer
- Broker
- NameServer
创建topic
- b broker地址
- c Cluster名称
- n nameserver地址列表
- t topic名称
1 | css复制代码updateTopic -b 192.168.0.1:10911 -c RocketMq-Cluster -n 192.168.0.1:9876;192.168.0.2:9876 -t order-topic |
删除topic
1 | css复制代码deleteTopic -c RocketMq-Cluster -n 192.168.0.1:9876;192.168.0.2:9876 -t order-topic |
创建/修改订阅组
订阅组名称
1 | css复制代码updateSubGroup -b 192.168.0.1:10911 -c RocketMq-Cluster -g subGroupName -n 192.168.0.1:9876;192.168.0.2:9876 |
删除订阅组
1 | css复制代码deleteSubGroup -b 192.168.0.1:10911 -c RocketMq-Cluster -g subGroupName -n 192.168.0.1:9876;192.168.0.2:9876 |
更新broker配置
某些配置文件broker运行的时候可以动态修改,-k broker配置文件的key -v value
1 | css复制代码updateBrokerConfig -b 192.168.0.1:10911 -c RocketMq-Cluster -n 192.168.0.1:9876;192.168.0.2:9876 -k deleteWhen -v 05 |
更新topic的读写权限
1 | css复制代码updateTopicPerm -b 192.168.0.1:10911 -c RocketMq-Cluster -n 192.168.0.1:9876;192.168.0.2:9876 -t order-topic |
查询topic路由信息
1 | css复制代码TopicRoute -b 192.168.0.1:10911 -c RocketMq-Cluster -n 192.168.0.1:9876;192.168.0.2:9876 -t order-topic |
查看topic路由信息
1 | css复制代码TopicList -n 192.168.0.1:9876;192.168.0.2:9876 |
查看topic状态统计信息
1 | css复制代码TopicStats -t order_topic -n 192.168.0.1:9876;192.168.0.2:9876 |
根据时间查询消息
1 | css复制代码printMsg -t order_topic -n 192.168.0.1:9876;192.168.0.2:9876 |
根据Id查询消息
1 | css复制代码queryMsgById -i msgId -n -n 192.168.0.1:9876;192.168.0.2:9876 |
查看集群信息
1 | css复制代码clusterList -n 192.168.0.1:9876;192.168.0.2:9876 |
额外说明
如果没有安装中文语言包,出现乱码了,可以通过
1 | perl复制代码[root@localhost local]# yum groupinstall chinese-support |
可以修改两台机器的日志配置文件并且把conf目录下所有xml文件中的${user.home}替换为/usr/local/rocketmq
1 | sql复制代码[root@localhost rocketmq]# mkdir -p /usr/local/rocketmq/logs |
分别修改两台机器的rocketmq启动脚本
1 | java复制代码[root@localhost rocketmq]# vim /usr/local/rocketmq/bin/runbroker.sh |
本文转载自: 掘金