- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RocketMQ (6)——客户端配置详解
RocketMQ的客户端和服务端采取完全不⼀样的配置机制——客户端没有配置⽂件,所有的配置选项需要开发者使⽤对应的配置的setter进
⾏设置。
由于现在⽹上基本找不到⼀套较为完善的配置⽂档,今天来讲讲截⽌⾄RocketMQ 4.0,客户端已有的所有配置的含义。
本⽂尽可能不深⼊讨论配置相关的原理和源码(除⾮笔者认为有必要交代对应的背景),尽可能以最简单的描述说清楚作为⼀个开发者从使
⽤的⾓度需要明⽩的那些表现。具体相关原理或具体分析请参考附带的参考链接。
注:以下带 * 的,表⽰为重要、基础的配置参数。
ClientConfig
RocketMQ的Producer (DefaultMQProducer)和Consumer(DefaultMQPushConsumer,DefaultMQPullConsumer),甚⾄运维相关的的
admin类(DefaultMQAdminExt)都继承⾃ClientConfig 。这意味着,其中的配置⽆论Producer还是Consumer都可以进⾏设置,其中⼤部分
都是公⽤的配置(但由于设计的问题,有些配置只会对消费或⽣产⽣效)。
namesrvAddr*
配置说明:NameServer的地址列表,若是集群,⽤;作为地址的分隔符。
默认值:-D系统参数rocketmq.namesrv.addr或环境变量NAMESRV_ADDR
⽆论⽣产者还是消费者,只要是客户端需要和服务器broker进⾏操作,就需要依赖Name Server进⾏服务发现。具体请看:
instanceName*
配置说明:客户端实例名称
默认值:从-D系统参数rocketmq.client.name获取,否则就是DEFAULT
这个值虽然默认写是DEFAULT ,但在启动的时候,如果我们没有显⽰修改还是维持其DEFAULT 的话,RocketMQ会更新为当前的进程号:
public void changeInstanceNameToPID (){
if(this instanceName equals(DEFAULT)) {
this instanceName = String valueOf(UtilAll getPid());
}
}
RocketMQ⽤⼀个叫ClientID 的概念,来唯⼀标记⼀个客户端实例,⼀个客户端实例对于Broker⽽⾔会开辟⼀个Netty的客户端实例。⽽
ClientID是由ClientIP+InstanceName构成,故如果⼀个进程中多个实例(⽆论Producer还是Consumer)ClientIP和InstanceName都⼀
样,他们将公⽤⼀个内部实例(同⼀套⽹络连接,线程资源等)
此外,此ClientID在对于Consumer负载均衡的时候起到唯⼀标识的作⽤,⼀旦多个实例(⽆论不同进程、不通机器、还是同⼀进程)的多个
Consumer实例有⼀样的ClientID ,负载均衡的时候必然RocketMQ任然会把两个实例当作⼀个client (因为同样⼀个clientID)。故为了避免
不必要的问题,ClientIP+instance Name 的组合建议唯⼀,除⾮有意需要共⽤连接、资源。
clientIP
配置说明:客户端IP
默认值:RemotingUtil.getLocalAddress()
这个值有两个⽤处:
1. 对于默认的instanceName( 见前⾯部分),如果没有显⽰设置,会使⽤ip+进程号,其中的ip便是这⾥的配置值
2. 对于Producer发送消息的时候,消息本⾝会存储本值到bornHost ,⽤于标记消息从哪台机器产⽣的
clientCallbackExecutorThreads
配置说明:客户端通信层接收到⽹络请求的时候,处理器的核数
默认值: Runtime.getRuntime().availableProcessors()
虽然⼤部分指令的发起⽅是客户端⽽处理⽅是broker/NameServer端,但客户端有时候也需要处理远端对发送给⾃⼰的命令,最常见的是⼀
些运维指令如GET_CONSUMER_RUNNING_INFO ,或者消费实例上线/下线的推送指令NOTIFY_CONSUMER_IDS_CHANGED ,这些指
令的处理都在⼀个线程池处理,clientCallbackExecutorThreads 控制这个线程池的核数
pollNameServerInter
您可能关注的文档
- 高级英语 Lesson 10 复习重点.pdf
- 图表数据描写句型.pdf
- 高考英语 阅读理解与完型填空 劳动的快乐.pdf
- RocketMQ事务性消息及持久化.pdf
- RocketMQ常见问题分析以及性能优化.pdf
- 使用RocketMQTemplate发送带tags的消息.pdf
- RocketMQ事务消息代码样例.pdf
- 航空航天专业英语词汇.pdf
- FPGA可编程逻辑器件芯片XC2S15-6CS144C中文规格书.pdf
- 运动鞋中英文对照.pdf
- rocketmq消息自定义_RocketMQ顺序消息.pdf
- FPGA可编程逻辑器件芯片XCZU9EG-1FFVC900I中文规格书.pdf
- FPGA可编程逻辑器件芯片XCZU21DR-2FFVD1156I中文规格书.pdf
- 绘本《Love -You-Forever》文本翻译(双语).pdf
- RocketMQ(三)RocketMQ怎么保证的消息不丢失?.pdf
- 套餐练21【新题型】2020届新高考英语7选5、语法填空、短文改错和书面表达组合练.pdf
- RocketMQ在Windows平台下环境搭建.pdf
原创力文档


文档评论(0)