消息驅(qū)動的微服務-SpringCloud Stream

簡介

SpringCloud Stream是一個用來為微服務應用構建消息驅(qū)動能力的框架咙边。通過使用SpringCloud Stream帖努,可以有效簡化開發(fā)人員對消息中間件的使用復雜度荞怒,讓開發(fā)人員有更多的精力來關注核心業(yè)務洒琢。SpringCloud Stream只支持RabbitMq和Kafka這兩個消息中間件的配置

代碼演示

  • 引入依賴


    依賴
  • 創(chuàng)建用于接收來自RabbitMq消息的消費者類SinkReceiver


    SinkReceiver

    在上面的例子中,我們通過@EnableBinding(Sink.class)綁定了sink接口褐桌,該接口是SpringCloud Stream中默認實現(xiàn)的對輸入消息通道的綁定,它的源碼實現(xiàn)如下:
    源碼實現(xiàn)

    另外荧嵌,@StreamListener注解作用是將被修飾的方法注冊為消息中間件上數(shù)據(jù)流的事件監(jiān)聽器,通過該注解將receive方法注冊為消息通道的監(jiān)聽處理器啦撮,當RabbitMq發(fā)布消息的時候谭网,receive方法會做出對應的響應動作

核心概念

  • SpringCloud流式微服務模型
  • Binder抽象消息中間件
  • 持續(xù)發(fā)布/訂閱支持
  • 支持消費者組
  • 支持消費分區(qū)
  • 可插拔的Binder API

流式微服務模型

一個SpringCloud Stream應用以消息中間件為核心,應用通過SpringCloud Stream注入的輸入/輸出通道與外部進行通信赃春,channels通過特定的binder實現(xiàn)與外部消息中間件通信愉择,架構圖如下所示:
架構圖

對消息中間件的抽象

Binder是SpringCloud Stream的一個抽象概念锥涕,是應用與消息中間件的粘合劑衷戈。SpringCloud Stream提供了對kafka和RabbitMq的抽象Binder來代表消息中間件层坠,抽象的Binder為靈活配置如何連接消息中間件及發(fā)送消息提供了良好的支持。

持續(xù)發(fā)布訂閱支持

流式微服務應用之間通過發(fā)布/訂閱模型通信破花,通過共享的topic來傳播數(shù)據(jù)。
發(fā)布訂閱模型示意圖

生產(chǎn)者把消息通過某個topic廣播出去蔚润,其他微服務通過訂閱topic來獲取廣播出來的消息觸發(fā)業(yè)務

消費者組

發(fā)布訂閱模型讓應用之間通過共享topic通信變得相當容易尺栖,不過在為高可用部署多個實例時,需要防止應用對該topic中的消息重復消費延赌,一條消息應該只能被一個消費者消費叉橱。SpringCloud Stream通過消費者組來實現(xiàn)上述需求,保證消息只被組中的一個消費者消費

分區(qū)支持

SpringCloud Stream為多個生產(chǎn)者實例的應用提供消息分區(qū)的支持窃祝。一個或多個生產(chǎn)者發(fā)送數(shù)據(jù)到多個消費者,把那個保證某個數(shù)據(jù)僅被某一個消費者實例消費粪小。


分區(qū)模型示意圖
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末探膊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逞壁,更是在濱河造成了極大的恐慌,老刑警劉巖腌闯,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異糖声,居然都是意外死亡,警方通過查閱死者的電腦和手機姨丈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟋恬,“玉大人,你說我怎么就攤上這事歼争。” “怎么了沐绒?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扮超。 經(jīng)常有香客問我,道長出刷,這世上最難降的妖魔是什么坯辩? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任馁龟,我火速辦了婚禮漆魔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘改抡。我一直安慰自己,他們只是感情好雀摘,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涯塔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪清蚀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天榛搔,我揣著相機與錄音,去河邊找鬼践惑。 笑死,一個胖子當著我的面吹牛凉袱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播专甩,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼钉稍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贡未?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤缸托,失蹤者是張志新(化名)和其女友劉穎瘾蛋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哺哼,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡叼风,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茵汰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孽鸡。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖彬碱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情巷疼,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布估盘,位于F島的核電站,受9級特大地震影響遣妥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜燥透,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肢藐。 院中可真熱鬧,春花似錦吆豹、人聲如沸理盆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至姨俩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間环葵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工邓萨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菊卷,地道東北人缔恳。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓洁闰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渴庆。 傳聞我的和親對象是個殘疾皇子雅镊,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

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