rocketmq客户端配置

2023-11-14

1、客户端配置

相对于RocketMQ的Broker集群,生产者和消费者都是客户端。

2、客户端寻址方式

RocketMQ可以令客户端找到Name Server, 然后通过Name Server再找到Broker。如下所示有多种配置方式,优先级由高到低,高优先级会覆盖低优先级。

  • 代码中指定Name Server地址,多个namesrv地址之间用分号分割
producer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");  

consumer.setNamesrvAddr("192.168.0.1:9876;192.168.0.2:9876");
  • Java启动参数中指定Name Server地址
-Drocketmq.namesrv.addr=192.168.0.1:9876;192.168.0.2:9876  
  • 环境变量指定Name Server地址
export   NAMESRV_ADDR=192.168.0.1:9876;192.168.0.2:9876   
  • HTTP静态服务器寻址(默认)

客户端启动后,会定时访问一个静态HTTP服务器,地址如下:http://jmenv.tbsite.net:8080/rocketmq/nsaddr,这个URL的返回内容如下:

192.168.0.1:9876;192.168.0.2:9876   

客户端默认每隔2分钟访问一次这个HTTP服务器,并更新本地的Name Server地址。URL已经在代码中硬编码,可通过修改/etc/hosts文件来改变要访问的服务器,例如在/etc/hosts增加如下配置:

10.232.22.67    jmenv.tbsite.net   

推荐使用HTTP静态服务器寻址方式,好处是客户端部署简单,且Name Server集群可以热升级。

3、客户端配置

DefaultMQProducer、TransactionMQProducer、DefaultMQPushConsumer、DefaultMQPullConsumer都继承于ClientConfig类,ClientConfig为客户端的公共配置类。客户端的配置都是get、set形式,每个参数都可以用spring来配置,也可以在代码中配置,例如namesrvAddr这个参数可以这样配置,producer.setNamesrvAddr("192.168.0.1:9876"),其他参数同理。

3.1 客户端的公共配置

参数名 默认值 说明
namesrvAddr Name Server地址列表,多个NameServer地址用分号隔开
clientIP 本机IP 客户端本机IP地址,某些机器会发生无法识别客户端IP地址情况,需要应用在代码中强制指定
instanceName DEFAULT 客户端实例名称,客户端创建的多个Producer、Consumer实际是共用一个内部实例(这个实例包含网络连接、线程资源等)
clientCallbackExecutorThreads 4 通信层异步回调线程数
pollNameServerInteval 30000 轮询Name Server间隔时间,单位毫秒
heartbeatBrokerInterval 30000 向Broker发送心跳间隔时间,单位毫秒
persistConsumerOffsetInterval 5000 持久化Consumer消费进度间隔时间,单位毫秒

3.2 Producer配置

参数名 默认值 说明
producerGroup DEFAULT_PRODUCER Producer组名,多个Producer如果属于一个应用,发送同样的消息,则应该将它们归为同一组
createTopicKey TBW102 在发送消息时,自动创建服务器不存在的topic,需要指定Key,该Key可用于配置发送消息所在topic的默认路由。
defaultTopicQueueNums 4 在发送消息,自动创建服务器不存在的topic时,默认创建的队列数
sendMsgTimeout 3000 发送消息超时时间,单位毫秒
compressMsgBodyOverHowmuch 4096 消息Body超过多大开始压缩(Consumer收到消息会自动解压缩),单位字节
retryAnotherBrokerWhenNotStoreOK FALSE 如果发送消息返回sendResult,但是sendStatus!=SEND_OK,是否重试发送
retryTimesWhenSendFailed 2 如果消息发送失败,最大重试次数,该参数只对同步发送模式起作用
maxMessageSize 4MB 客户端限制的消息大小,超过报错,同时服务端也会限制,所以需要跟服务端配合使用。
transactionCheckListener 事务消息回查监听器,如果发送事务消息,必须设置
checkThreadPoolMinSize 1 Broker回查Producer事务状态时,线程池最小线程数
checkThreadPoolMaxSize 1 Broker回查Producer事务状态时,线程池最大线程数
checkRequestHoldMax 2000 Broker回查Producer事务状态时,Producer本地缓冲请求队列大小
RPCHook null 该参数是在Producer创建时传入的,包含消息发送前的预处理和消息响应后的处理两个接口,用户可以在第一个接口中做一些安全控制或者其他操作。

3.3 PushConsumer配置

参数名 默认值 说明
consumerGroup DEFAULT_CONSUMER Consumer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组
messageModel CLUSTERING 消费模型支持集群消费和广播消费两种
consumeFromWhere CONSUME_FROM_LAST_OFFSET Consumer启动后,默认从上次消费的位置开始消费,这包含两种情况:一种是上次消费的位置未过期,则消费从上次中止的位置进行;一种是上次消费位置已经过期,则从当前队列第一条消息开始消费
consumeTimestamp 半个小时前 只有当consumeFromWhere值为CONSUME_FROM_TIMESTAMP时才起作用。
allocateMessageQueueStrategy AllocateMessageQueueAveragely Rebalance算法实现策略
subscription 订阅关系
messageListener 消息监听器
offsetStore 消费进度存储
consumeThreadMin 20 消费线程池最小线程数
consumeThreadMax 20 消费线程池最大线程数
consumeConcurrentlyMaxSpan 2000 单队列并行消费允许的最大跨度
pullThresholdForQueue 1000 拉消息本地队列缓存消息最大数
pullInterval 0 拉消息间隔,由于是长轮询,所以为0,但是如果应用为了流控,也可以设置大于0的值,单位毫秒
consumeMessageBatchMaxSize 1 批量消费,一次消费多少条消息
pullBatchSize 32 批量拉消息,一次最多拉多少条

3.4 PullConsumer配置

参数名 默认值 说明
consumerGroup DEFAULT_CONSUMER Consumer组名,多个Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组
brokerSuspendMaxTimeMillis 20000 长轮询,Consumer拉消息请求在Broker挂起最长时间,单位毫秒
consumerTimeoutMillisWhenSuspend 30000 长轮询,Consumer拉消息请求在Broker挂起超过指定时间,客户端认为超时,单位毫秒
consumerPullTimeoutMillis 10000 非长轮询,拉消息超时时间,单位毫秒
messageModel BROADCASTING 消息支持两种模式:集群消费和广播消费
messageQueueListener 监听队列变化
offsetStore 消费进度存储
registerTopics 注册的topic集合
allocateMessageQueueStrategy AllocateMessageQueueAveragely Rebalance算法实现策略

3.5 Message数据结构

字段名 默认值 说明
Topic null 必填,消息所属topic的名称
Body null 必填,消息体
Tags null 选填,消息标签,方便服务器过滤使用。目前只支持每个消息设置一个tag
Keys null 选填,代表这条消息的业务关键词,服务器会根据keys创建哈希索引,设置后,可以在Console系统根据Topic、Keys来查询消息,由于是哈希索引,请尽可能保证key唯一,例如订单号,商品Id等。
Flag 0 选填,完全由应用来设置,RocketMQ不做干预
DelayTimeLevel 0 选填,消息延时级别,0表示不延时,大于0会延时特定的时间才会被消费
WaitStoreMsgOK TRUE 选填,表示消息是否在服务器落盘后才返回应答。

参考:

https://github.com/apache/rocketmq/blob/master/docs/cn/best_practice.md 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rocketmq客户端配置 的相关文章

  • RocketMQ部署之动态设置JVM启动参数

    这里是weihubeats 觉得文章不错可以关注公众号小奏技术 文章首发 拒绝营销号 拒绝标题党 背景 线上的RocketMQ集群有运行一段时间了 比如测试环境和线上环境的RocketMQ集群部署的机器内存大小肯定不一样 所以可能要写多个部
  • RocketMQ-如何保证顺序消息

    1 简介 实际开发中会有以下场景 需要保证一组消息的生产顺序与消费顺序相同 例如 监听数据库表单条数据的的多次修改 需要保证监听者最终得到的消息顺序和数据库表对单条数据的修改顺序一样 网购平台创建订单的过程一般都是异步实现 订单创建和支付流
  • RocketMQ Pull和Push

    在rocketmq里 consumer被分为2类 MQPullConsumer和MQPushConsumer 其实本质都是拉模式 pull 即consumer轮询从broker拉取消息 区别是 push方式里 consumer把轮询过程封装
  • 消息中间件 RocketMQ 源码解析:Message拉取&消费(上)

    摘要 原创出处 http www iocoder cn RocketMQ message pull and consume first 芋道源码 欢迎转载 保留摘要 谢谢 本文主要基于 RocketMQ 4 0 x 正式版 1 概述 2 C
  • RocektMQ社区"每周直播分享第8期"如约而至

    各位同学 RocektMQ社区 每周直播分享第8期 如约而至 分享题目 RocketMQ消息的过滤和重试实现原理详解 直播方式 钉钉群直播方式 群号 21791227 分享时间 2019 01 24 20 00 21 30 本周四 分享讲师
  • centos安装rocketmq

    centos安装rocketmq 1 下载rocketmq二进制包 2 解压二进制包 3 修改broker conf 4 修改runbroker sh和runserver sh的JVM参数 5 启动NameServer和Broker 6 安
  • rabbitmq简介

    开发十年 就只剩下这套Java开发体系了 gt gt gt 1 AMQP AMQP协议是一个高级抽象层消息通信协议 RabbitMQ是AMQP协议的实现 它主要包括以下组件 1 1 Server broker 接受客户端连接 实现AMQP消
  • Rocketmq 消息过滤简述

    Rocketmq消息过滤是指在消息消费时 消费者Consumer可以对某一主题下的消息按照某种过滤规则进行过滤 只消费自己感兴趣的消息 Rocketmq同时支持在Broker端和Consumer端做消息过滤 Broker端过滤 Broker
  • springboot集成RabbitMQ-超级详细步骤

    本文对应的代码地址 https github com zhangshilin9527 rabbitmq study 前置工作 1 安装rabbitmq 2 登录 地址 http localhost 15672 账号密码 guest gues
  • 【RocketMQ】消息重试、重试次数设置、死信队列

    文章目录 1 死信队列 1 1 死信特性 1 2 查看死信消息 2 重试次数参数 2 1 Producer端重试 2 2 Consumer端重试 3 1 异常重试 3 2 超时重试 参考 1 死信队列 上一篇 RocketMQ 消息重试中我
  • Failed to execute goal on project rocketmq-console-ng: Could not resolve dependencies for project

    Apache RocketMQ安装部署 Failed to execute goal on project rocketmq console ng Could not resolve dependencies for project org
  • RocketMQ的消息优先级

    有些场景 需要应用程序处理几种类型的消息 不同消息的优先级不同 RocketMQ是个先入先出的队列 不支持消息级别或者Topic级别的优先级 业务中简单的优先级需求 可以通过间接的方式解决 下面列举三种优先级相关需求的具体处理方法 第一种
  • RocketMQ第四篇 Rocket集群配置

    在实际开发中一般都会使用docker安装rocketMQ docker安装rocketmq如下 docker安装配置rocketmq docker安装rocketmq docker pull foxiswho rocketmq server
  • RocketMQ-源码解读与调试

    源码环境搭建 源码拉取 RocketMQ的官方Git仓库地址 GitHub apache rocketmq Mirror of Apache RocketMQ 可以用git把项目clone下来或者直接下载代码包 也可以到RocketMQ的官
  • RocketMQ消费者可以手动消费但无法主动消费问题,或生成者发送超时

    1 大多数是配置问题 修改rocketmq文件夹broker conf 2 配置与集群IP或本地IPV4一样 重启 在RocketMQ独享实例中支持IPv4和IPv6双栈 主要是通过在网络层面上同时支持IPv4和IPv6协议栈来实现的 Ro
  • RocketMQ报No route info of this topic

    最近某天突然收到报警邮件 线上某个应用发送MQ消息报错 完整异常栈如下 2018 04 08 18 17 44 126 DubboServerHandler 10 141 6 116 20968 thread 172 ERROR com x
  • JMS MQ绑定问题

    我在使用 MDB 与 MQ 队列绑定 JMS 时遇到了这个奇怪的问题 消息驱动的 EJB CrbEventMessageAsynchronousService无法连接到 JMS 目标 queue contratto crb input pu
  • 为什么Thread.sleep(0)可以阻止rocketmq中的gc?

    最近我阅读了RocketMQ的源代码 但我无法理解这段代码 为什么这段代码可以阻止gc呢 https github com apache rocketmq blob master store src main java org apache
  • Kafka速度之谜:高性能的幕后秘密大揭秘

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 kafka高性能的原因 Page Cache ZeroCopy 零拷贝 前言 Kafka的介绍 kafka是linkedIn开源的分布式消息系统 归给Ap
  • 通过 .net 客户端通过 SSL 连接到 IBM MQ

    我正在尝试通过 NET 客户端连接到 MQ 服务器队列 我需要使用证书进行安全通信 这是我的代码 MQEnvironment SSLKeyRepository SYSTEM MQEnvironment ConnectionName conn

随机推荐

  • 第十章 Oracle恢复内部原理(各式各样的恢复特性)

    10 1 并行恢复 v7 1 并行恢复的目标是用计算和I O的并行机制减少崩溃恢复 单实例恢复和介质恢复的时间 当多个磁盘上多个数据文件同时进行恢复时能有效的降低恢复时间 10 1 1 并行恢复架构 并行恢复分区做两件事 1 读重做日志 2
  • spring BeanCreationException

    一般出现这样的错误 日志打印很长 稍微不注释加上失去耐心 就会查询问题很久 spring一般报错误都是由上到下的进行提示 比如a调用b b调用c c调用d d有问题 一般看到的日志时a b c d这样大概的顺序描述 例如 Caused by
  • pip install -r requirements.txt出现错误时........

    只需要把pip install r requirements txt后加入替换网址即可 安装需要的库的时候建议使用清华源 这样更快 使用下面的指令就可以使用清华源下载了 pip install r requirements txt i ht
  • Django 快速搭建博客 第三节(数据库表设计)

    上一节我们已经能在pycharm下新建了blog app了 这个时候 我们需要设计一下博客的数据库设计 关于数据库表的设计 作为新手的我们并不需要要求懂太多稍微的懂一些也就可以了 毕竟数据库也是需要有一定的功底的 这里我们依据博客学习 将博
  • 多线程操作同一个变量

    在java线程并发处理中 有一个关键字volatile的使用目前存在很大的混淆 以为使用这个关键字 在进行多线程并发处理的时候就可以万事大吉 Java语言是支持多线程的 为了解决线程并发的问题 在语言内部引入了 同步块 和 volatile
  • Python算法工程师:心中无码便是高清,马赛克“脑补”算法 PULSE

    1 万恶马赛克 万恶的马赛克 是阻碍人类进步的绊脚石 马赛克 脑补 算法 PULSE 助你图片模糊变高清 这是杜克大学近期的一项研究 将模糊人脸秒变高清 PULSE 算法目前只支持人脸的马赛克 去除 因为训练数据都是人脸 也就是说 脑补 其
  • 华为X系列服务器,华为X系列高密服务器产品介绍.pptx

    华为X系列高密服务器产品介绍 目标 华为高密服务器总览X6000服务器介绍X8000服务器介绍 计算面临的挑战 云计算 IT面临的挑战 华为服务器家族 华为高密服务器总览X6000服务器介绍X6000服务器简介X6000服务器硬件结构X60
  • MySQL 视图(详解)

    文章目录 一 视图概念 使用视图的原因 二 创建视图 1 基本语法 2 创建基于单表的视图 实例 1 实例 2 3 创建基于多表的视图 实例 3 4 查询视图 实例 4 三 查看视图 1 查询表 包括view 2 查询视图 四 修改视图 1
  • 【Node】使用Node.js连接数据库时报错客户端不支持服务器请求的身份验证协议

    使用Node js连接数据库时报错 Error ER NOT SUPPORTED AUTH MODE Client does not support authentication protocol requested by server c
  • 嗯… 无法访问此页面 www.bing.com 花了太长时间进行响应解决办法

    从昨天开始 Microsoft Edge浏览器在搜索栏输入中文后就无法响应 但是网络连接是好的 防火墙也没有设置过 问题见下图 点击运行Windows网络诊断 如下图 检测完成后 只是说你的计算机配置似乎是正确的 但该设备或资源 www b
  • 微信小程序animation动画,微信小程序animation动画无限循环播放

    需求是酱紫的 页面顶部的喇叭通知 内容不固定 宽度不固定 就是做走马灯 轮播 效果 从左到右的走马灯 轮播 每播放一遍暂停 1500ms 2000ms 刚开始想的是 css 的 position relative animation 如果宽
  • 自定义一个VideoCapturer(WebRTC)用于获取大疆无人机实时视频

    WebRTC做大疆无人机直播 大疆带屏遥控器有直播功能 用的是rtmp 但是延时有点大 所以在遥控器里安装自己的软件 用webrtc来做一个无人机视频实时传输 需要自定义一个VideoCapturer来获取无人机视频封装成便于webrtc使
  • Spring AOP 剖析(5)

    在动态代理 和 CGLIB 的支持下 Spring AOP 框架的实现经过了两代 从 Spring AOP 框架第一次发布 到 Spring 2 0 发布之前的 AOP 实现 是 Spring 第一代 AOP 实现 Spring 2 0 发
  • vue项目中修改页面logo和标题

    第一步 把图片转成icon格式 比特虫转换工具 建议尺寸为16 16 第二步 将图标重命名为 favicon ico 并放在项目根目录下 第三步 然后在index html中引入 title中修改页面标题 第四部 分别修改build文件夹下
  • 5. spark 参数问题

    如何传递spark 参数 在代码中设置参数 命令行 Spark Properties 动态加载参数 官网地址 spark 参数 在代码中设置参数 spark default conf lt 命令行 lt 代码内部设置参数 对于一常用的参数可
  • python 图像处理中PIL中image.convert()函数使用

    from PIL import Image img Image open E image myimg jpg result img convert P palette Image ADAPTIVE colors 10 3 模式 P 模式 P
  • 计算机图形学 3D 渲染 笔记(二)

    一 阴影 判断一个点是否被遮住 可以从该点像光源方向发射射线 P tL 若射线被与物体发生相交 则说明它在阴影中 而这个物体由于要在 P 和 光源之间 在方向光场景下 t 的取值范围是 0 lt t lt 因为光源无限远 而在点光下 t 的
  • 经济学人:重塑世界的区块链技术

    比特币背后的技术可让彼此互不认识的人建立可依赖的账簿 这远远超出了加密数字货币本身的意义 Mariana Catalina Izaguirre女士在她简陋的房子已经居住了三十年 但洪都拉斯的警察在2009年突然要将她赶走 不同于她在特古西加
  • Frida hook零基础教程

    1 环境搭建 1 准备frida服务端环境 Releases frida frida GitHub 根据手机具体版本下载对应文件并解压 Android手机一般是arm64架构 将解压后的frida server推送到手机端的 data lo
  • rocketmq客户端配置

    1 客户端配置 相对于RocketMQ的Broker集群 生产者和消费者都是客户端 2 客户端寻址方式 RocketMQ可以令客户端找到Name Server 然后通过Name Server再找到Broker 如下所示有多种配置方式 优先级