RocketMQ概念、环境搭建

本文介绍RocketMQ消息中间件的特点及部署步骤,包括其严格的顺序保证、消息拉取模式、订阅者扩展能力等优势,并详细记录了双Master配置环境下RocketMQ的安装与配置流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:

  • A、能够保证严格的消息顺序;
    B、提供丰富的消息拉取模式;
    C、高效的订阅者水平扩展能力;
    D、实时的消息订阅机制;
    E、亿级消息堆积能力;
    F、Metaq1.x和2.x,3.x下以后版本名,产品名称改为RocketMQ

         选用理由:
            A、强调集群无单点,可扩展,任意一点高可用,水平可扩展;
            B、海量消息堆积能力,消息堆积后,写入低延迟;
            C、支持上万个队列;
            D、消息失败重试机制;
            E、消息可查询;
            F、开源社区活跃;
            G、成熟度(经过双十一考验);
    

    二、专业术语

     - Producer:消息生产者,负责生产消息,一般由业务系统负责产生消息;
    Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费;
    Push Consumer:Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦受到消息,立刻回掉Listener接口方法;
    Pull Consumer:Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权应用控制;
    Producer Group:一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致;
    Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致;
    Broker:消息中转角色,负责存储消息,转发消息,一般也成为Server,在JMS规范中称为Provider。
    广播消费:一条消息被多个Consumer消费,计时这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。
    集群消费:一个Consumer Group中的Consumer实例平均分摊消费消息。
                      在JMS规范中,JMS point-to-point model与之类似,但是RocketMQ的集群消费功能大等于PTP模型。因为ROcket MQ单个Consumer Group内的消费者类似于PTP,但是一个Topic/Queue可以被多个Consumer Group消费。
    顺序消息:消费消息的顺序要同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送的顺序去消费消息。
    

三、RocketMQ环境搭建

  • 双/多master配置方式: 0、服务器环境:
    这里写图片描述
    1、命令:(每个master都要修改) vim /etc/hosts
   IP:192.168.100.24 ;NAME:rocketmq-nameserver1   
   IP:192.168.100.24 ;NAME:rocketmq-master1   
   IP:192.168.100.25 ;NAME:rocketmq-nameserver2

2、命令:service network restart
3、命令:tar -zxvf alibaba-rocketmq-3.4.2.6.tar.gz -C /usr/local/
4、创建软连接,命令:ln -s alibaba-rocketmq-3.4.2.6 rocketmq
5、创建存储路劲,命令:mkdir /usr/local/rocketmq/store
命令:mkdir /usr/local/rocketmq/store/commitlog
命令:mkdir /usr/local/rocketmq/store/consumequeue
命令:mkdir /usr/local/rocketmq/store/index
6、修改RocketMQ配置文件,命令:vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
内容如下:

   #所属集群名字 
   brokerClusterName=rocketmq-cluster
   #broker名字,注意此处不同的配置文件填写的不一样  
   brokerName=broker-a
   #0表示Master,>0表示Slave 
   brokerId=0
   #nameServer地址,分号分割  
   namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
   #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数  
   defaultTopicQueueNums=4
   #是否允许Broker自动创建Topic,建议线下开启,线上关闭  
   autoCreateTopicEnable=true
   #是否允许Broker自动创建订阅组,建议线下开启,线上关闭 
   autoCreateSubscritionGroup=true
   #Broker对外服务的监听端口  
   listentPort=10911
   #删除文件时间点,默认凌晨4点  
   deleteWhen=04
   #文件保留时间,默认48小时  
   fileReservedTime=120
   #commitLog每个文件的大小默认1G  
   mapedFileSizeCommitLog=1073741824
   #ConsumeQueue每个文件默认存30w条,根据业务情况调整
   ConsumeQueue=300000
   #destroyMapedFileIntervalFocibly=120000
   #redeleteHangedFileInterval=120000
   #检查物理文件磁盘空间 
   diskMaxUsedSpaceRatio=88
   #存储路径  
   storePathRootDir=/usr/local/rocketmq/store
   #commitLog存储路径  
   storePathCommitLog=/usr/local/rocketmq/store/commitlog
   #消费队列存储路径存储路径  
   storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
   #消息索引存储路径  
   storePathIndex=/usr/local/rocketmq/store/index
   #checkpoint文件存储路径  
   storeCheckpoint=/usr/local/rocketmq/store/checkpoint
   #abort文件存储路径  
   abortFile=/usr/local/rocketmq/store/abort
   #限制的消息大小  
   maxMessageSize=65536
   #flushConsumeQueueLeastages=2
   #flushCommitLogThoroughInterval=10000
   #flushConsumeQueueThoroughInterval=60000
   #Broker的角色
   #-ASYNC_MASTER以不复制Master
   #-SYNC_mATER 同步双写Master
   brokerRole=ASYNC_MASTER
   #磁盘方式
   #-ASYNC_FLUSH异步刷盘
   #-SYNC_FLUSH同步刷盘 flushDiskType=ASYNC_FLUSH
   #checkTransactionMessageEnable=false
   #发消息线程数量
   #sendMessagethreadPoolNums=128
   #拉消息线程池数量

(重复上面内容修改操作)

vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties

7、修改日志配置文件【两台机器】,命令:mkdir -p /usr/local/rocketmq/logs
命令:cd/usr/local/rocketmq/conf && sed-i's#${usr.home}#/usr/local/rocketmq#g'*.xml

8、修改启动脚本参数【两台机器】

vim /usr/local/rocketmq/bin/runbroker.sh

修改内容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m


vim /usr/local/rocketmq/bin/runserver.sh

修改内容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m

9、启动 NameServer【两天机器】,命令:cd/usr/local/rocket/bin nohup sh mqnamesrv &

10、启动Broker Server A 【192.168.100.24】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log

11、启动BrokerServer B 【192.168.100.25】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
12、解压Tomcat,命令:tar -zxvf apache-tomcat-7.029.tar.gz -C /usr/local
13、进入tomcat,命令:cd apache-tomcat-7.0.29/webapps/ ,上传rocketmq-console控制台war包
14、命令:mikdir /usr/local/rocketmq-console
15、解压rocketmq-console.war到rocketmq-console文件夹中,命令:unzip rocketmq-console.war -d rocketmq-console
16、进入rocketmq-console中的web-inf的class文件,命令:cd rocketmq-console/ ,命令:cd WEB-INF,命令:cd class/
17、修改配置文件,命令:vim config.properties
配置完成,可以启动
18、启动tomcat,命令:/usr/local/apache-tomcat-7.0.29/bin/startup.sh
19|、查看启动结果,命令:jps
20、查看tomcat日志,命令:tail -f -n 500 /usr/local/apache-tomcat-7.0.29/logs/catalina.out

内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
内容概要:本文深入探讨了利用历史速度命令(HVC)增强仿射编队机动控制性能的方法。论文提出了HVC在仿射编队控制中的潜在价值,通过全面评估HVC对系统的影响,提出了易于测试的稳定性条件,并给出了延迟参数与跟踪误差关系的显式不等式。研究为两轮差动机器人(TWDRs)群提供了系统的协调编队机动控制方案,并通过9台TWDRs的仿真和实验验证了稳定性和综合性能改进。此外,文中还提供了详细的Python代码实现,涵盖仿射编队控制类、HVC增强、稳定性条件检查以及仿真实验。代码不仅实现了论文的核心思想,还扩展了邻居历史信息利用、动态拓扑优化和自适应控制等性能提升策略,更全面地反映了群体智能协作和性能优化思想。 适用人群:具备一定编程基础,对群体智能、机器人编队控制、时滞系统稳定性分析感兴趣的科研人员和工程师。 使用场景及目标:①理解HVC在仿射编队控制中的应用及其对系统性能的提升;②掌握仿射编队控制的具体实现方法,包括控制器设计、稳定性分析和仿真实验;③学习如何通过引入历史信息(如HVC)来优化群体智能系统的性能;④探索中性型时滞系统的稳定性条件及其在实际系统中的应用。 其他说明:此资源不仅提供了理论分析,还包括完整的Python代码实现,帮助读者从理论到实践全面掌握仿射编队控制技术。代码结构清晰,涵盖了从初始化配置、控制律设计到性能评估的各个环节,并提供了丰富的可视化工具,便于理解和分析系统性能。通过阅读和实践,读者可以深入了解HVC增强仿射编队控制的工作原理及其实际应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值