rocketmq的windows与linux环境简单使用

一、使用中遇到的问题

问题1:
mqbroker启动失败原因:
runbroker.sh里面设置的内存大小太大了。runserver.sh 有类似问题

问题2:
Broker禁止自动创建Topic,且用户没有通过手工方式创建Topic 会出现 No route info of this topic 异常,另外代码编程中,导入的类库需要全,具体可以参考rockermq的lib文件夹下的jar包。


问题3:
ServletRequest / ServletResponse / MultipartFile 这些对象注意,是不能被序列化的,特别注意要放入消息队列的对象是否可以被序列化。

注意消息最大长度设置参数,规范要求。

二、linux使用
启动:
nohup sh mqnamesrv &

nohup sh mqbroker -n localhost:9876 &
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &
nohup sh mqbroker -n localhost:9876  -c /opt/rocketmq/rocketmq-all-4.7.0-bin-release/conf/broker.conf   &
nohup sh mqbroker -n localhost:9876  autoCreateTopicEnable=true -c /opt/rocketmq/rocketmq-all-4.7.0-bin-release/conf/broker.conf   &
nohup sh mqbroker -n 192.168.1.1:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
broker的默认端口是10911 默认IP是拿到的第一个网卡
The broker[daqinhere, 10.10.10.12:10911] boot success. serializeType=JSON and name server is localhost:9876
HAServer: 10.10.10.12:10912

指定broker的ip地址方式是在其配置文件中配置: brokerIP1=10.10.10.12     即可

./mqbroker -n 127.0.0.1:9876 -p   查看配置信息,比如autoCreateTopicEnable是不是true

测试消息发送与接收:
export NAMESRV_ADDR=localhost:9876
sh tools.sh org.apache.rocketmq.example.quickstart.Producer        生产消息
java -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Djava.ext.dirs=./../lib:/usr/java/jdk1.8.0_212-amd64/jre/lib/ext:/usr/java/jdk1.8.0_212-amd64/lib/ext -cp .:./../conf:.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar org.apache.rocketmq.example.quickstart.Producer

java -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Djava.ext.dirs=./../lib:/usr/java/jdk1.8.0_212-amd64/jre/lib/ext:/usr/java/jdk1.8.0_212-amd64/lib/ext -cp .:./../conf:.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar com.test.TestSth

sh tools.sh org.apache.rocketmq.example.quickstart.Consumer    消费消息


停止:
sh mqshutdown broker
sh mqshutdown namesrv

rm -rf ../store/*


nohup sh mqnamesrv &
nohup sh mqbroker -n localhost:9876  -c /opt/rocketmq/rocketmq-all-4.7.0-bin-release/conf/broker.conf   &

sh mqadmin clusterList -n localhost:9876                查看nameserver上注册了哪些broker。

手动创建rocketmq中的topic
sh mqadmin updatetopic -n mq服务器所在地址 -c 进群组名 -t topic名字
单master的默认群组名是DefaultCluster,配置在 broker.conf  中。
sh mqadmin updatetopic -n 10.10.10.12:9876 -c DefaultCluster -t configTopicArp2
sh mqadmin updateTopic -b localhost:10911 -t TopicTest
sh mqadmin updatetopic -n 10.10.10.12:9876 -c AdpMqCluster -t topic_topic

自动创建topic主题生效要求客户端和服务端版本一致,目前客户端和服务端都是4.7.0版本的。
使用自动创建主题存在不好的地方,部分场景消息收到的时间间隔很长。https://www.sohu.com/a/322176700_115128

查看topic列表:
sh mqadmin topicList -n localhost:9876
查看特定topic  TopicTestC的cluser:
sh mqadmin topicClusterList -n localhost:9876 -t TopicTestC
删除特定topoc   TopicTestTaohuazhong1:
sh mqadmin deleteTopic -n localhost:9876 -t TopicTestTaohuazhong1 -c DefultCluster
查看topic路由信息:
sh mqadmin topicRoute -n localhost:9876 -t TopicTest
查看topic状态:
sh mqadmin topicStatus -n localhost:9876 -t TopicTest
https://www.jianshu.com/p/84a6948f45cf

提供了基于DLedger的master选举机制。DLedger是基于RAFT协议做一定变更开发的选举机制。
利用分布式系统验证与故障注入框架 Jepsen 来检测 DLedger 存在的问题,并验证系统的可靠性。
https://zhuanlan.zhihu.com/p/77166786

可靠性设计:
1、磁盘占用  RocketMQ所有消息都是持久化的,采用文件记录形式持久化。RocketMQ没有内存Buffer概念,RocketMQ的队列都是持久化磁盘,数据定期清除。Broker会定期删除过期的数据,例如Broker只保存3天的消息,那么这个Buffer虽然长度无限,但是3天前的数据会被从队尾删除。
2、消息重发业务处理,消息重试机制可以指定失败重试次数。rocketmq不支持Exactly Only Once,要求在业务上进行去重,也就是说消费消息要做到幂等性。
3、消息有序保证 RocketMQ可以严格的保证消息有序
4、批量发送消息 单次超过4MB,需要保护,具体参见官方优秀实践。

broker配置文件:
fileReservedTime = 72,文件保留时间(单位小时),默认为3天
deleteWhen = “04”,何时触发删除文件,默认凌晨4点删除文件
brokerRole = ASYNC_MASTER   broker的角色:异步复制的master,同步双写的master,slave
flushDiskType = ASYNC_FLUSH  刷盘:同步,异步

1:物理使用率大于diskSpaceWarningLevelRatio(默认90%可通过参数设置),则会阻止新消息的插入
2:物理使用率大于diskSpaceCleanForciblyRatio(默认85%,可设置),则过进行过期物理文件的删除
3:恢复磁盘可写 配合 #1使用
4:物理磁盘使用率小于diskMaxUsedSpaceRatio 表示磁盘使用正常

jvm环境的user.home变量值 通过 java -XshowSettings:all -version 查看
rocketmq的日志路径是以该user.home变量为基准的,配置在logback配置文件里。
/root/logs/rocketmqlogs    存储日志路径
/root/store    存储数据文件路径
storePathRootDir=/opt/rocketmq/rocketmq-all-4.7.0-bin-release/store
storePathCommitLog=/opt/rocketmq/rocketmq-all-4.7.0-bin-release/store/commitlog
storePathConsumeQueue=/opt/rocketmq/rocketmq-all-4.7.0-bin-release/store/consumequeue
storePathIndex=/opt/rocketmq/rocketmq-all-4.7.0-bin-release/store/index
storeCheckpoint=/opt/rocketmq/rocketmq-all-4.7.0-bin-release/store/checkpoint
abortFile=/opt/rocketmq/rocketmq-all-4.7.0-bin-release/store/abort


rockermq-console启动,用于查看rocketmq 集群相关信息:
java -jar D:\a\1tools\rocketmq-externals-master\rocketmq-console\target\rocketmq-console-ng-1.0.1.jar        即可
启动之前需要配置 D:\a\1tools\rocketmq-externals-master\rocketmq-console\src\main\resources\application.properties   ,将nameserver的IP和端口配置进去。

三、windows环境

windows环境拉起nameserver和broker 
start mqnamesrv.cmd
mqbroker -n localhost:9876 autoCreateTopicEnable=true

1、producer生成时候设置的失败重试次数是生效的,只不过是在具体规定的超时时间内完成所有重试,如果未完成,会返回超时异常。
2、采用java接口创建topic,则在首次向该topic发送消息的时候,消费者消费到消息的时间很长,需要几十秒,所以要求topic在拉起rocketmq时候用脚本直接创建,在java代码中不做创建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上搭建RocketMQ环境,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Java Development Kit(JDK)。你可以使用以下命令来检查是否已经安装了JDK: ``` java -version ``` 如果没有安装,请先安装JDK。 2. 下载RocketMQ压缩包。你可以从RocketMQ官方网站或者GitHub仓库上下载最新的稳定版本。 3. 解压RocketMQ压缩包。可以使用以下命令解压: ``` tar zxvf rocketmq-all-x.x.x-bin-release.zip ``` 4. 配置环境变量。打开你的`~/.bashrc`文件(或者其他适用的配置文件),并添加以下内容: ``` export ROCKETMQ_HOME=解压后的RocketMQ目录路径 export PATH=$PATH:$ROCKETMQ_HOME/bin ``` 5. 保存并关闭配置文件。然后执行以下命令以使配置生效: ``` source ~/.bashrc ``` 6. 配置RocketMQ。进入RocketMQ目录,并编辑`conf/broker.conf`和`conf/namesrv.conf`文件,根据你的需求进行配置。主要配置项包括监听IP、端口、存储路径等。 7. 启动Name Server。执行以下命令启动Name Server: ``` nohup sh bin/mqnamesrv & ``` 8. 启动Broker Server。执行以下命令启动Broker Server: ``` nohup sh bin/mqbroker -n localhost:9876 & ``` 9. 验证RocketMQ是否成功启动。你可以通过查看日志文件或者执行以下命令来验证RocketMQ是否成功启动: ``` tail -f ~/logs/rocketmqlogs/namesrv.log tail -f ~/logs/rocketmqlogs/broker.log ``` 现在,你已经成功在Linux上搭建了RocketMQ环境。你可以使用RocketMQ提供的命令行工具或者编写代码来使用RocketMQ进行消息传递。 请注意,以上步骤仅适用于Linux环境。如果你使用的是其他操作系统,请参考相应的文档进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值