Spring Cloud Alibaba 實(shí)戰(zhàn)(九) - Spring Cloud Stream

1 定義

  • 一個(gè)用于構(gòu)建消息驅(qū)動(dòng)的微服務(wù)的框架
    用人話說就是 : 致力于簡化MQ通信的框架

2 編程模型

◆ Destination Binder (目標(biāo)綁定器)

  • 與消息中間件通信的組件
    ◆ Destination Bindings (目標(biāo)綁定)
    Binding是連接應(yīng)用程序跟消息中間件的橋梁,用于消息的消費(fèi)和生產(chǎn)属百,由binder創(chuàng)建
    ◆ Message(消息)
    可見該編程模型異常強(qiáng)大,短短幾行代碼,就實(shí)現(xiàn)了消息的對接和處理
    input/output就是微服務(wù)接收和發(fā)出消息

下面開始對內(nèi)容中心編碼

3 編寫生產(chǎn)者

  • 添加依賴


  • 在啟動(dòng)類添加注解


  • 寫配置


4 編寫消費(fèi)者

編碼用戶中心

  • 添加依賴


  • 啟動(dòng)類上添加注解


  • 寫配置


5 自定義接口

5.1 發(fā)送消息

  • 新建mysource接口


  • 啟動(dòng)類注解


  • 寫配置,注意要和接口中的名字一致


  • 測試代碼


注意,由于mybatis會(huì)掃描啟動(dòng)類注解上scan注解所限制路徑下的所有接口,所以一旦有接口未被xml mapper,即拋異常,所以編碼時(shí)必須將掃描注解范圍限定死在mapper包下!

5.2 消費(fèi)消息

用戶中心編碼

  • 寫接口


  • 添注解


  • 加配置



透過現(xiàn)象看本質(zhì)

當(dāng)我們定義好Source/Sink接口后,在啟動(dòng)類使用EnableBinding指定了接口后,就會(huì)使用IOC創(chuàng)建對應(yīng)名字的代理類,所以配置文件中也必須同名

消息過濾

監(jiān)控

記得多看端點(diǎn)哦!
output/input其實(shí)就是一個(gè)channel


排錯(cuò)依據(jù)的重要端點(diǎn)

  • /actuator/bindings
  • /actuator/channels
  • /actuator/health

異常處理

整合RocketMQ實(shí)現(xiàn)分布式事務(wù)

Stream本身并未考慮分布式事務(wù)問題,都是RocketMQ的能力

重構(gòu)生產(chǎn)者

對內(nèi)容中心一頓操作:刪除不必要代碼

  • 自定義的MySource接口,因?yàn)镾pring內(nèi)置的就已經(jīng)滿足我們的需求了


  • 接著別忘了刪除啟動(dòng)類中對他的引用
  • 刪除TestController中對應(yīng)測試代碼
  • 清理yml中Spring消息編程模型整合RocketMQ的部分


  • myoutput刪除


  • 修正如下

代碼重構(gòu)

改造ShareService

  • 即改造以下代碼(直接刪除)


  • 添加Source


  • 開始使用source發(fā)送消息,但是send只能直接發(fā)送消息(或者帶有超時(shí))



    而我們之前使用rocketmqtemplate傳遞參數(shù)時(shí)可以帶個(gè)arg



    那現(xiàn)在我們該怎么傳arg呢???
    記得前面埋下的伏筆,header也是很有用處的!

    我們可以將要傳的參數(shù)放入header中,如下:



    rocketmqtemplate功成身退,我們可以使用stream編程模型完全替代了

改造AddBonusTransactionListener

  • 現(xiàn)在這里的arg是null了


  • 需要從header中獲取arg了(有坑,后面再說),在這里打個(gè)斷點(diǎn)


  • 完善配置(IDEA無法識(shí)別,但確實(shí)會(huì)生效),實(shí)現(xiàn)事務(wù)功能


  • 注意上面的group名稱要與下一致


  • 啟動(dòng)內(nèi)容中心
  • 發(fā)送請求


  • 發(fā)現(xiàn)dto其實(shí)是字符串,并不是DTO對象


  • 所以繼續(xù)修正代碼



  • 這樣就是正常的對象了



    因?yàn)閺膆eader中獲取的都是字符串哦!切記!

重構(gòu)消費(fèi)者

對用戶中心刪除不必要代碼,與內(nèi)容中心類似,不再詳述

  • 刪除


  • MyTestStreamConsumer改為AddBonusStreamConsumer

重構(gòu)如下


總結(jié)

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末记劝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子族扰,更是在濱河造成了極大的恐慌厌丑,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渔呵,死亡現(xiàn)場離奇詭異怒竿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)厘肮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門愧口,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人类茂,你說我怎么就攤上這事耍属。” “怎么了巩检?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵厚骗,是天一觀的道長。 經(jīng)常有香客問我兢哭,道長领舰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮冲秽,結(jié)果婚禮上舍咖,老公的妹妹穿的比我還像新娘。我一直安慰自己锉桑,他們只是感情好排霉,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著民轴,像睡著了一般攻柠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上后裸,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天瑰钮,我揣著相機(jī)與錄音,去河邊找鬼微驶。 笑死浪谴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祈搜。 我是一名探鬼主播较店,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼容燕!你這毒婦竟也來了梁呈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蘸秘,失蹤者是張志新(化名)和其女友劉穎官卡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體醋虏,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寻咒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颈嚼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毛秘。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阻课,靈堂內(nèi)的尸體忽然破棺而出叫挟,到底是詐尸還是另有隱情,我是刑警寧澤限煞,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布抹恳,位于F島的核電站,受9級特大地震影響署驻,放射性物質(zhì)發(fā)生泄漏奋献。R本人自食惡果不足惜健霹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓶蚂。 院中可真熱鬧糖埋,春花似錦、人聲如沸扬跋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钦听。三九已至,卻和暖如春倍奢,著一層夾襖步出監(jiān)牢的瞬間朴上,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工卒煞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痪宰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓畔裕,卻偏偏與公主長得像衣撬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子扮饶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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