spring-cloud-stream 入門(mén)篇

Spring Cloud Stream介紹

Spring Cloud Stream是一個(gè)用于構(gòu)建消息驅(qū)動(dòng)的微服務(wù)應(yīng)用程序的框架晰房。Spring Cloud Stream以Spring Boot為基礎(chǔ)酵颁,創(chuàng)建獨(dú)立的生產(chǎn)級(jí)Spring應(yīng)用程序躏惋,并使用Spring Integration提供與消息代理的連接簿姨。它提供了來(lái)自多個(gè)供應(yīng)商的中間件的的配置簸搞,引入了發(fā)布-訂閱語(yǔ)義、使用者組和分區(qū)的概念域仇。

知識(shí)點(diǎn)

  • Spring Messaging
  • Spring Integration
  • Spring Cloud Stream

基礎(chǔ)內(nèi)容

Spring Messaging

Spring Messaging 是 Spring Framework 中的一個(gè)模塊寺擂,其作用就是統(tǒng)一消息的編程模型怔软。

Figure 1. Message
Figure 2. Message Channel
  • Message挡逼,消息對(duì)象,包含Header和Payload嘱能;Payload可以是任意類型,Header定義了通用信息(例如:id憔涉、時(shí)間和返回地址等);
  • Message Channel兜叨,Pipes and Filters模型中的Pipe国旷;其中定義了用來(lái)發(fā)送消息到此Pipe的send方法茫死;其根據(jù)MessageHandler中兩種獲取消息的方式定義了兩個(gè)子接口:PollableChannel用來(lái)表示支持拉模型的通道,其中定義了receive方法用來(lái)支持MessageHandler主動(dòng)拉取消息峦萎;SubscribableChannel用來(lái)表示支持推模型(發(fā)布/訂閱模型)的通道,其中定義了subscribe和unsubscribe方法用來(lái)支持MessageHandler的訂閱和取消訂閱被环;Spring Messaging 定義了DestinationResolver接口用來(lái)選擇消息的目的地详幽,消息的目的地可以是Pipe(MessageChannel)唇聘,也可以是Filter(MessageHandler);
  • AbstractMessageProducingHandler:可以指定一個(gè)outputChannel剥险,處理完消息之后的結(jié)果發(fā)送到此Channel中宪肖;
  • AbstractReplyProducingMessageHandler:不用指定outputChannel,inputChannel就是outputChannel夫凸;
  • AbstractReplyProducingPostProcessingMessageHandler:處理完消息之后夭拌,在發(fā)送結(jié)果到outputChannel;

Spring Integration

Spring Integration 提供了 Spring 編程模型的擴(kuò)展用來(lái)支持企業(yè)集成模式(Enterprise Integration Patterns)蒜绽,是對(duì) Spring Messaging 的擴(kuò)展躲雅。
它提出了不少新的概念骡和,包括消息路由MessageRoute、消息分發(fā)MessageDispatcher钮科、消息過(guò)濾Filter婆赠、消息轉(zhuǎn)換Transformer、消息聚合Aggregator休里、消息分割Splitter等等妙黍。同時(shí)還提供了MessageChannel和MessageHandler的實(shí)現(xiàn),分別包括 DirectChannel畜挨、ExecutorChannel噩凹、PublishSubscribeChannel和MessageFilter毡咏、ServiceActivatingHandler、MethodInvokingSplitter 等內(nèi)容堵泽。

Spring Cloud Stream

SCS 在 Spring Integration 的基礎(chǔ)上進(jìn)行了封裝迎罗,提出了Binder, Binding, @EnableBinding, @StreamListener等概念。
SCS 與 Spring Boot Actuator 整合纹安,提供了/bindings, /channelsendpoint厢岂。
SCS 與 Spring Boot Externalized Configuration 整合,提供了BindingProperties, BinderProperties等外部化配置類塔粒。
SCS 增強(qiáng)了消息發(fā)送失敗的和消費(fèi)失敗情況下的處理邏輯等功能卒茬。
SCS 是 Spring Integration 的加強(qiáng),同時(shí)與 Spring Boot 體系進(jìn)行了融合努隙,也是 Spring Cloud Bus 的基礎(chǔ)。它屏蔽了底層消息中間件的實(shí)現(xiàn)細(xì)節(jié)荸镊,希望以統(tǒng)一的一套 API 來(lái)進(jìn)行消息的發(fā)送/消費(fèi)躬存,底層消息中間件的實(shí)現(xiàn)細(xì)節(jié)由各消息中間件的 Binder 完成舀锨。
Binder是提供與外部消息中間件集成的組件岭洲,為構(gòu)造Binding提供了 2 個(gè)方法,分別是bindConsumer和bindProducer坎匿,它們分別用于構(gòu)造生產(chǎn)者和消費(fèi)者盾剩。目前官方的實(shí)現(xiàn)有 Rabbit Binder 和 Kafka Binder, Spring Cloud Alibaba 內(nèi)部已經(jīng)實(shí)現(xiàn)了 RocketMQ Binder替蔬。

Figure 1. Spring Cloud Stream Application
image.png
  • Binders
  • Bindings告私,綁定在外部消息傳遞系統(tǒng)(例如,隊(duì)列承桥、主題等)與應(yīng)用程序提供的生產(chǎn)者和消費(fèi)者之間提供了橋梁驻粟。
  • Producers
  • Consumers

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市凶异,隨后出現(xiàn)的幾起案子蜀撑,更是在濱河造成了極大的恐慌,老刑警劉巖沃饶,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異椎咧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)脚牍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)驯遇,“玉大人,你說(shuō)我怎么就攤上這事陡叠。” “怎么了岭妖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵淮蜈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鹉梨,道長(zhǎng),這世上最難降的妖魔是什么旦袋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上柬讨,老公的妹妹穿的比我還像新娘踩官。我一直安慰自己,他們只是感情好辩越,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布督惰。 她就那樣靜靜地躺著,像睡著了一般觉阅。 火紅的嫁衣襯著肌膚如雪劫哼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天谈火,我揣著相機(jī)與錄音扔字,去河邊找鬼。 笑死震檩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播背伴,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掷倔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起凛虽,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤至非,失蹤者是張志新(化名)和其女友劉穎荒椭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年咐低,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羹令。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲤屡。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堰汉,死狀恐怖就乓,靈堂內(nèi)的尸體忽然破棺而出邦投,到底是詐尸還是另有隱情见芹,我是刑警寧澤玄呛,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站惯吕,受9級(jí)特大地震影響淹魄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦姆泻、人聲如沸拇勃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)栗弟。三九已至,卻和暖如春工闺,著一層夾襖步出監(jiān)牢的瞬間横腿,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工斤寂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耿焊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓遍搞,卻偏偏與公主長(zhǎng)得像罗侯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子溪猿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容