接触 kafka 有一段时间了,一个人的力量实在有限,国内 rocketmq 的生态确实更好,决定换方向。
rocketmq 文档地址:http://rocketmq.cloud/zh-cn/docs/bestpractice-broker.html
windows 环境下测试,
启动 nameserver:
mqnamesrv.cmd -n localhost:9876
启动 broker:
mqbroker.cmd -n localhost:9876
创建 topic,创建的 topic 默认 8 个分区:
mqadmin.cmd updateTopic -n localhost:9876 -b localhost:10911 -t TopicTest
查看 topic 分区信息:
mqadmin.cmd topicStatus -n localhost:9876 -t TopicTest
根据分区 offset 查询消息:
mqadmin.cmd queryMsgByOffset -n localhost:9876 -b zhang -i 0 -o 30 -t TopicTest
windows 单机部署 2m
----------- broker-a.propertes listenPort=10911 namesrvAddr=localhost:9876 storePathRootDir=D:\tools\rocketmq-all-4.3.2-bin-release\store storePathCommitLog=D:\tools\rocketmq-all-4.3.2-bin-release\store\commitlog ----------- broker-b.propertes listenPort=20911 namesrvAddr=localhost:9876 storePathRootDir=D:\tools\rocketmq-all-4.3.2-bin-release\store2 storePathCommitLog=D:\tools\rocketmq-all-4.3.2-bin-release\store2\commitlog
启动
mqbroker.cmd -c ../conf/2m-noslave/broker-a.properties mqbroker.cmd -c ../conf/2m-noslave/broker-b.properties
集群环境下,创建 topic:
mqadmin.cmd updateTopic -n localhost:9876 -c DefaultCluster -t topic-zhang
这样会在 2 个 master 上分别创建 8 个分区。代码逻辑在 org.apache.rocketmq.tools.command.topic.UpdateTopicSubCommand#execute 中。