rocketmq 源码分析

rocketmq 源码分析

ID:16100956

大小:708.00 KB

页数:39页

时间:2018-08-07

rocketmq 源码分析_第1页
rocketmq 源码分析_第2页
rocketmq 源码分析_第3页
rocketmq 源码分析_第4页
rocketmq 源码分析_第5页
资源描述:

《rocketmq 源码分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、RocketMQ源码分析——Message发送与接收本文主要基于RocketMQ4.0.x正式版·1、概述???关注微信公众号:【芋道源码】有福利:1.RocketMQ/MyCAT/Sharding-JDBC 所有源码分析文章列表2.RocketMQ/MyCAT/Sharding-JDBC 中文注释源码GitHub地址3.您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。4.新的源码解析文章实时收到通知。每周更新一篇左右。5.认真的源码交流微信群。1、概述1.Producer 发送消息。主要是同步发送消息源码,涉及到异步/Oneway发送

2、消息,事务消息会跳过。2.Broker 接收消息。(存储消息在《RocketMQ源码分析——Message存储》解析)2、Producer发送消息DefaultMQProducer#send(Message)1:@Override2:publicSendResultsend(Messagemsg)throwsMQClientException,RemotingException,MQBrokerException,InterruptedException{3:returnthis.defaultMQProducerImpl.send(msg);4:}·说明:发送同

3、步消息,DefaultMQProducer#send(Message) 对 DefaultMQProducerImpl#send(Message) 进行封装。DefaultMQProducerImpl#sendDefaultImpl()1:publicSendResultsend(Messagemsg)throwsMQClientException,RemotingException,MQBrokerException,InterruptedException{2:returnsend(msg,this.defaultMQProducer.getSendMsgTi

4、meout());3:}4:5:publicSendResultsend(Messagemsg,longtimeout)throwsMQClientException,RemotingException,MQBrokerException,InterruptedException{6:returnthis.sendDefaultImpl(msg,CommunicationMode.SYNC,null,timeout);7:}8:9:privateSendResultsendDefaultImpl(//10:Messagemsg,//11:finalCommunic

5、ationModecommunicationMode,//12:finalSendCallbacksendCallback,//13:finallongtimeout//14:)throwsMQClientException,RemotingException,MQBrokerException,InterruptedException{15://校验Producer处于运行状态16:this.makeSureStateOK();17://校验消息格式18:Validators.checkMessage(msg,this.defaultMQProducer);19

6、://20:finallonginvokeID=random.nextLong();//调用编号;用于下面打印日志,标记为同一次发送消息21:longbeginTimestampFirst=System.currentTimeMillis();22:longbeginTimestampPrev=beginTimestampFirst;23:longendTimestamp=beginTimestampFirst;24://获取Topic路由信息25:TopicPublishInfotopicPublishInfo=this.tryToFindTopicPublis

7、hInfo(msg.getTopic());26:if(topicPublishInfo!=null&&topicPublishInfo.ok()){27:MessageQueuemq=null;//最后选择消息要发送到的队列28:Exceptionexception=null;29:SendResultsendResult=null;//最后一次发送结果30:inttimesTotal=communicationMode==CommunicationMode.SYNC?1+this.defaultMQProducer.getRetryTimesWhenSendF

8、ailed

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。