RocketMQ部署文档

news2024/11/23 9:37:04

目录

一、引言

二、简介

三、Linux环境搭建&安装包下载

四、RocketMQ部署服务的简述

五、RocketMQ部署集中集群方式和配置

六、配置(注意对应版本)


一、引言

适用读者:一切使用RocketMQ的人员。

文章目的:主要介绍RocketMQ的集中部署方式和方法、使开发人员快速搭建RocketQM服务器。

二、简介

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

  • 能够保证严格的消息顺序

  • 提供丰富的消息拉取模式

  • 提供丰富的消息拉取模式

  • 高效的订阅者水平扩展能力

  • 实时的消息订阅机制

  • 亿级消息堆积能力

三、Linux环境搭建&安装包下载

  1. Java环境:RocketMQ依赖于宿主机Java环境,所以首先确保Java环境安装到位,如有不懂Java安装,问度娘。
  2. Rocket下载:https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz 具体版本根据需求下载,此处以3.2.6作为案例版本。
  3. 复制、解压安装包:将安装包上传至服务器目标目录,例:opt/tpapp/。解压安装包即可: tar -zxvf alibaba-rocketmq-3.2.6.tar.gz  opt/tpapp/rocketmq 。

四、RocketMQ部署服务的简述

    我们需要部署NameSever和Broker服务器,这两个服务有什么作用和用途请看下图:

    

    NameServer:

        RocketMQ-nameSrv用于管理所有broker的信息,以便于Producer和Consumer能够获取到正确的Broker信息,进行业务处理;

        可以看到NameSrv的主要管理内容如下:

        1. 接收Broker的注册,注销请求。

        2. Producer获取topic下的所有BrokerQueue,put消息。

        3. Consumer获取topic下所有的BrokerQueue,get消息。

    Broker:

        负责存储消息,提供读写功能。

    RocketMQ依赖于NameServer服务器和Broker服务器,所以我们需要分别部署NameServer和Broker(实际上只是用同一个软件文件,以不同的命令和配置区分别启动NameServer服务和Broker服务的)。

五、RocketMQ部署集中集群方式和配置

    NameServer一般作多台集群部署(2台:namesrv1、namesrv2):

    启动:namesrv1 : nohup opt/tpapp/rocketmq/bin/mqnamesrv &

             namesrv2 : nohup opt/tpapp/rocketmq/bin/mqnamesrv &

    停止:sh mqshutdown namesrv

    Broker部署集群方式有以下几种(Master和Slave都是指Broker服务器):

    1.单Master(一台服务器)

        优点:除了配置简单没什么优点

        缺点:不可靠,该机器重启或宕机,将导致整个服务不可用

        启动:

        nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-noslave/broker-a.properties)

    2.多Master(两台或多台服务器)

        优点:配置简单,性能最高

        缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性

        启动:

        nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-noslave/broker-a.properties)

        nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-noslave/broker-b.properties)

    3.多Master多Slave,每个Master配一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟,毫秒级()

        优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预

        缺点:Master宕机或磁盘损坏时会有少量消息丢失

        启动:

        Master:

        nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-async/broker-a.properties)                

        nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-async/broker-a-s.properties)

       Slave:  

       nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-async/broker-b.properties)

       nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-async/broker-b-s.properties)

    4.多Master多Slave,每个Master配一个Slave,有多对Master-Slave,HA采用同步双写方式,主备都写成功,向应用返回成功

        优点:服务可用性与数据可用性非常高

        缺点:性能比一部HA略低,当前版本主宕备不能自动切换为主

        Master和Slave的配置文件参考conf目录下的配置文件

        Master与Slave通过指定相同的brokerName参数来配对,Master的BrokerId必须是0,Slave的BrokerId必须是大于0的数

        一个Master下面可以挂载多个Slave,同一Master下的多个Slave通过指定不同的BrokerId来区分

       Master:

       nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-sync/broker-a.properties)                

       nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-sync/broker-a-s.properties)

       Slave:  

       nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-sync/broker-b.properties)

       nohup opt/tpapp/rocketmq/bin/mqbroker -n namesrv1IP;namesrv2IP -c 配置文件(../conf/2m-2s-sync/broker-b-s.properties)

    5. 停止broker

        sh mqshutdown broker

六、配置(注意对应版本)

    1.Broker配置

 

参数名

 

默认值

 

说明

consumerGroup

Conusmer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组

listenPort

10911

Broker对外服务的监听端口

namesrvAddr

Null

Name Server地址

brokerIP1

本机IP

本机IP地址,默认系统自动识别,但是某些多网卡机器会存在识别错误的情况,这种情况下可以人工配置

brokerName

本机主机名

brokerClusterName

DefaultCluster

Broker所属哪个集群

brokerId

0

BrokerId,必须是大等于0的整数,0表示Master,>0表示Slave,一个Master可以挂多个Slave,Master和Slave通过BrokerName来配对

storePathCommitLog

$HOME/store/commitlog

commitLog存储路径

storePathConsumeQueue

$HOME/store/consumequeue

消费队列存储路径

storePathIndex

$HOME/store/index

消息索引存储队列

deleteWhen

4

删除时间时间点,默认凌晨4点

fileReservedTime

48

文件保留时间,默认48小时

maxTransferBytesOnMessageInMemory

262144

单次pull消息(内存)传输的最大字节数

maxTransferCountOnMessageInMemory

32

单次pull消息(内存)传输的最大条数

maxTransferBytesOnMessageInMemory

65535

单次pull消息(磁盘)传输的最大字节数

maxTransferCountOnMessageInDisk

8

单次pull消息(磁盘)传输的最大条数

messageIndexEnable

TRUE

是否开启消息索引功能

messageIndexSafe

FALSE

是否提供安全的消息索引机制,索引保证不丢

brokerRole

ASYNC_MASTER

Broker的角色

-ASYNC_MASTER异步复制Master

-SYNC_MASTER同步双写Master

-SLAVE

flushDiskType

ASYNC_FLUSH

刷盘方式

-ASYNC_FLUSH异步刷盘

-SYNC_FLUSH同步刷盘

cleanFileForciblyEnable

TRUE

磁盘满,且无过期文件情况下TRUE表示强制删除文件,优先保证服务可用

FALSE标记服务不可用,文件不删除

    2.客户端公共配置类:clientconfig

参数名

默认值

说明

NamesrvAddr

NameServer地址列表,多个nameServer地址用分号隔开

clientIP

本机IP

客户端本机IP地址,某些机器会发生无法识别客户端IP地址情况,需要应用在代码中强制指定

instanceName

DEFAULT

客户端实例名称,客户端创建的多个Producer,Consumer实际是共用一个内部实例(这个实例包含网络连接,线程资源等)

clientCallbackExecutorThreads

4

通信层异步回调线程数

pollNameServerInteval

30000

轮训Name Server 间隔时间,单位毫秒

heartbeatBrokerInterval

30000

向Broker发送心跳间隔时间,单位毫秒

persistConsumerOffsetInterval

5000

持久化Consumer消费进度间隔时间,单位毫秒

   3.producer配置

参数名

默认值

说明

producerGroup

DEFAULT_PRODUCER

Producer组名,多个Producer如果属于一个应用,发送同样的消息,则应该将它们归为同一组。

createTopicKey

TBW102

在发送消息时,自动创建服务器不存在的topic,需要指定key

defaultTopicQueueNums

4

在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

sendMsgTimeout

10000

发送消息超时时间,单位毫秒

compressMsgBodyOverHowmuch

4096

消息Body超过多大开始压缩(Consumer收到消息会自动解压缩),单位字节

retryAnotherBrokerWhenNotStoreOK

FALSE

如果发送消息返回sendResult,但是sendStatus!=SEND_OK,是否重试发送

maxMessageSize

131072

客户端限制的消息大小,超过报错,同时服务端也会限制(默认128K)

transactionCheckListener

事物消息回查监听器,如果发送事务消息,必须设置

checkThreadPoolMinSize

1

Broker回查Producer事务状态时,线程池大小

checkThreadPoolMaxSize

1

Broker回查Producer事务状态时,线程池大小

checkRequestHoldMax

2000

Broker回查Producer事务状态时,Producer本地缓冲请求队列大小

    4.pushConsumer配置

 

参数名

 

默认值

 

说明

consumerGroup

DEFAULT_CONSUMER

Consumer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应将它们归为同一组

messageModel

CLUSTERING

消息模型,支持以下两种1.集群消费2.广播消费

consumeFromWhere

CONSUME_FROM_LAST_OFFSET

Consumer启动后,默认从什么位置开始消费

allocateMessageQueueStrategy

AllocateMessageQueueAveragely

Rebalance算法实现策略

Subscription

{}

订阅关系

messageListener

消息监听器

offsetStore

 

消费进度存

consumeThreadMin

10

消费线程池数量

consumeThreadMax

20

消费线程池数量

consumeConcurrentlyMaxSpan

2000

单队列并行消费允许的最大跨度

pullThresholdForQueue

1000

拉消息本地队列缓存消息最大数

Pullinterval

0

拉消息间隔,由于是长轮询,所以为0,但是如果应用了流控,也可以设置大于0的值,单位毫秒

consumeMessageBatchMaxSize

1

批量消费,一次消费多少条消息

pullBatchSize

32

批量拉消息,一次最多拉多少条

    5.pullConsumer

 

参数名

 

默认值

 

说明

consumerGroup

Conusmer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组

brokerSuspendMaxTimeMillis

20000

长轮询,Consumer拉消息请求在Broker挂起最长时间,单位毫秒

consumerPullTimeoutMillis

10000

非长轮询,拉消息超时时间,单位毫秒

consumerTimeoutMillisWhenSuspend

30000

长轮询,Consumer拉消息请求咋broker挂起超过指定时间,客户端认为超时,单位毫秒

messageModel

BROADCASTING

消息模型,支持以下两种:1集群消费 2广播模式

messageQueueListener

监听队列变化

offsetStore

消费进度存储

registerTopics

注册的topic集合

allocateMessageQueueStrategy

Rebalance算法实现策略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1512751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cmake初识

cmake 什么是软件构建和编译工具cmake安装cmakewindowsLinux 通过cmake编译代码准备CMakeLists.txt注释块状注释cmake_minimum_required:确定cmake的最低版本project:定义工程名称:add_executable:定义工程会生成一个可执行程序准备生成可执行…

JMH287亲测【鸣潮】一键内测风景端V1.0.2已整理并录制视频教学

资源介绍: 否需要虚拟机:否 文件大小:压缩包约15G 支持系统:win7、win10、win11 硬件需求:运行内存16G 4核及以上CPU独立显卡 资源截图: 下载地址: JMH287【鸣潮】一键端 [V1.0.2]

【C++教程从0到1入门编程】第八篇:STL中string类的模拟实现

一、 string类的模拟实现 下面是一个列子 #include <iostream> namespace y {class string{public: //string() //无参构造函数// :_str(nullptr)//{}//string(char* str) //有参构造函数// :_str(str)//{}string():_str(new char[1]){_str[0] \0;}string(c…

性能卓越,服务周到:亚信安慧AntDB的双重优势

亚信安慧AntDB数据库是一种解决实时流数据处理中数据容灾和一致性问题的创新性解决方案。它不仅能够在处理流数据时确保数据的完整性和准确性&#xff0c;还能精确判断数据故障点&#xff0c;从而避免可能的数据损失和错误。AntDB数据库采用先进的技术和算法&#xff0c;能够实…

道路数据下载

下载链接&#xff1a; Geofabrik 下载服务器

Android 配置打包签名信息的两种方法

目录结构如下&#xff1a; 有2种方式&#xff1a; 第一种&#xff0c;直接配置&#xff1a; signingConfigs { debug { storeFile file("app/keystore.properties") storePassword "111111" keyAlias "key" keyPassword "111111" } …

漏洞复现-万户ezOFFICE系列

万户 安全情报,万户ezOFFICE协同管理平台SendFileCheckTemplateEdit-SQL注入漏洞万户OA DocumentEdit_unite.jsp 存在sql注入万户协同办公平台 ezoffice 未授权访问RCExml代码注入 XXE🔪freemarkerService XXE🔪GeneralWeb-xxeofficeserverservlet + attachmentserver RCE…

前端实现 查询包含分页 以及封装table表格 上手即用!

表格组件是 element plus 中的table 又经过了一层封装 封装的table代码在最底下 <div class"box2"><el-radio-group v-model"radio" style"margin-bottom: 16px"><el-radio-button label"1">类型1</el-radio…

2024/3/11打卡分巧克力(第8届蓝桥杯省赛)——二分

题目 儿童节那天有 K 位小朋友到小明家做客。 小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 N 块巧克力&#xff0c;其中第 i 块是 HiWi 的方格组成的长方形。 为了公平起见&#xff0c;小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。 切出的巧克力需要满足&…

亚马逊热卖SN-48B压线钳 2.8/4.8/6.3 300PCS插簧端子压接工具

品牌&#xff1a;SANJIANG 型号&#xff1a;SN-48B(橙色手柄)300PCS 颜色分类&#xff1a;SN-48B(橙色手柄),SN-48B(红蓝双色手柄),300PCS插簧端子,SN-48B(橙色手柄)300PCS,SN-48B(红蓝双色手柄)300PCS SN-48B 300PCS 0.5mm的电线尺寸应与0.5mm的连接器匹配&#xff0c;然后…

软考高级:统一过程阶段和工作流概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

使用Python的zipfile模块巧解Word批量生成问题

目录 一、zipfile模块简介 二、Word文档的结构 三、使用zipfile模块生成Word文档 创建ZIP文件 添加文件到ZIP中 生成Word文档内容 批量生成Word文档 四、案例与代码实现 五、总结 在日常办公和自动化任务中&#xff0c;批量生成Word文档是一个常见的需求。然而&am…

算法练习-牛牛的快递(思路+流程图+代码)

难度参考 难度&#xff1a;简单 分类&#xff1a;分支控制 难度与分类参考题目来源网站。 题目 链接&#xff1a;牛牛的快递__牛客网 (nowcoder.com) 来源&#xff1a;牛牛的快递__牛客网 (nowcoder.com) 牛牛正在寄快递&#xff0c;他了解到快递在 1kg 以内的按起步价…

vue上传文件夹+上传文件vue-simple-uploader

vue上传文件夹上传文件vue-simple-uploader 使用插件 在main.js引入 import uploader from vue-simple-uploaderVue.use(uploader);<el-dialog title"上传文件" :visible.sync"dialogFileVisible" width"50%" :before-close"handleFil…

《安富莱嵌入式周报》第334期:开源SEM扫描电子显微镜,自制编辑器并搭建嵌入式环境,免费产品设计审查服务,实用电子技术入门,USB资料汇总,UDS统一诊断

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1om411Z714/ 《安富莱嵌入式周报》第334期&#xff1a;开源SEM…

Primavera P6 – 从资源池中分配专属项目资源

前言 在使用P6的资源分配功能中&#xff0c;尝试使用 Primavera P6 的搜索功能来解决此问题仍然会导致每次尝试向活动添加资源时都会搜索单个资源。 这很费力&#xff0c;并不能节省太多的时间和精力。 这个简单、省时的技巧为使用 Primavera P6 的项目管理从业者提供了解决此…

前端之用HTML弄一个古诗词

将进酒 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>将进酒</title><h1><big>将进酒</big> 君不见黄河之水天上来</h1><table><tr><td ><img…

记一次特殊的渗透经历

起因 搞安全的小伙伴们应该知道&#xff0c;干我们这行老是会碰到一些奇奇怪怪的问题和需求&#xff0c;比如上次&#xff0c;某客户领导说让我给他找个会渗透的小伙子来&#xff0c;有个比较棘手的业务。我一听&#xff0c;心想&#xff1a;好嘛&#xff0c;这私活不就来了嘛…

python语音处理常见开源库介绍

在 Python 中&#xff0c;有几个著名的开源语音处理库&#xff0c;它们提供了丰富的工具和功能&#xff0c;用于处理和分析语音数据。以下是几个流行的 Python 语音处理库及其安装方法、特点和优势&#xff1a; 1. librosa 安装 pip install librosa特点 - **音频处理*…

【图像超分】论文精读:efficient sub-pixel convolutional neural network (ESPCN)

文章目录 前言Abstract1.Introduction1.1. Related Work1.2. Motivations and contributions 2. Method2.1. Deconvolution layer2.2. Efficient sub-pixel convolution layer 3. Experiments3.1. Datasets3.2. Implementation details3.3. Image super-resolution results3.3.…