RocketMQ之Request-Reply

2020-03-24  本文已影响0人  丑人林宗己

这个特性是微众向开源社区提供的基于RocketMQ实现的同步调用的场景,属于远程调用的一个场景,对比诸如Doubbo, FeignRPC远程调用功能。

1、为何会有request-reply这样的场景?

RocketMQ作为分布式消息中间件的核心能力应该是解耦,削峰等等的场景,同步调用无疑弱化了这些耀眼的能力,咋看起来有些‘不务正业’。但是,所有的产品的出现都有它的适用的场景以及必要,不会空穴来风。

这样比较太过于粗浅,但是不耽误我们以简单的方式去理解它们。二者都是极为优秀的工业级产品,都有各自无懈可击的优势。但是由于出现的背景不尽相同,即便相同的能力也是由不同的能力叠加而成,所以分析的时候不妨也以装箱拆箱的思路来分析不同的组件组合成的效果之间的差异性。

2、如何实现?

实现的思路其实不复杂。

image.png

几个核心点:

核心的类与方法:

DefaultMQProducerImpl#request()
RequestResponseFuture#waitResponseMessage()#putResponseMessage()
MessageUtil#createReplyMessage()
ReplyMessageProcessor#processReplyMessageRequest()
ClientRemotingProcessor#receiveReplyMessage()
上一篇 下一篇

猜你喜欢

热点阅读