【原創(chuàng)】拉勾課程速推指南 第六階段 分布式消息服務中間件進階 模塊一 開源消息中間件RabbitMQ

文章內(nèi)容輸出來源:拉勾教育Java高薪訓練營

學習心得

【拉勾課程速推指南】學習心得

課程介紹

第六階段 分布式消息服務中間件進階

模塊一 開源消息中間件RabbitMQ

本模塊對市場上常用的開源消息中間件RabbitMQ進行深度源碼剖析、并對ACK副编、限流傲宜、TTL、死信、延遲碱工、集群等高級應用和原理進行講解庵寞。

作業(yè)內(nèi)容

基于RabbitMQ的TTL以及死信隊列,使用SpringBoot實現(xiàn)延遲付款闪朱,手動補償操作月匣。

  1. 用戶下單后展示等待付款頁面

  2. 在頁面上點擊付款的按鈕,如果不超時奋姿,則跳轉(zhuǎn)到付款成功頁面

  3. 如果超時锄开,則跳轉(zhuǎn)到用戶歷史賬單中查看因付款超時而取消的訂單

課程目錄及觀看建議

2倍速模式
課程3小時
作業(yè)3小時
*** 必看
** 建議看
* 可不看

  • 任務一:消息中間件概述
  1. 【課程資料】課程資料
  2. 課程介紹(時長:06:21)
  3. 分布式架構(gòu)通信(時長:28:40)
  4. 自定義消息中間件(時長:18:32)
  5. 主流消息中心間及選型(時長:32:26)
  6. 消息中間件應用場景1-秒殺案例(時長:12:48)
  7. 消息中間件應用場景2-拉勾案例(時長:08:36)
  8. JMS經(jīng)典模式詳解1(時長:18:48)
  9. JMS經(jīng)典模式詳解2(時長:20:34)
  10. AMQP協(xié)議剖析(時長:26:25)*
  • 任務二:RabbitMQ架構(gòu)與實戰(zhàn)
  1. RabbitMQ邏輯架構(gòu)(時長:09:47)**
  2. RabbitMQ Exchange類型(時長:16:15)**
  3. RabbitMQ的數(shù)據(jù)存儲(時長:35:35)
  4. 安裝配置RabbitMQ(時長:21:16)***
  5. RabbitMQ常用命令1(時長:24:16)
  6. RabbitMQ常用命令2(時長:32:53)
  7. RabbitMQ實戰(zhàn)案例(時長:43:40)
  8. Connection與Channel的關(guān)系1(時長:10:49)
  9. Connection與Channel的關(guān)系2(時長:32:07)
  10. RabbitMQ工作隊列模式(時長:15:35)**
  11. RabbitMQ發(fā)布訂閱模式1(時長:33:07)**
  12. RabbitMQ發(fā)布訂閱模式2(時長:10:03)**
  13. RabbitMQ路由模式(時長:22:42)**
  14. RabbitMQ主題模式(時長:30:25)***
  15. Spring整合RabbitMQ(時長:46:43)
  16. Spring注解整合RabbitMQ(時長:46:37)
  17. Spring注解整合RabbitMQ Listener(時長:21:35)
  18. SpringBoot整合RabbitMQ(時長:23:47)***
  • 任務三:RabbitMQ高級特性解析
  1. 消息可靠性1(時長:36:51)
  2. 消息可靠性2(時長:27:47)
  3. 消息可靠性之持久化存儲機制(時長:16:08)
  4. 消息可靠性之消費端確認機制(時長:30:57)
  5. 消息可靠性之消費端限流機制(時長:26:08)
  6. 消息可靠性之消息可靠性保障(時長:11:22)
  7. 可靠性分析(時長:34:33)
  8. TTL機制解析(時長:32:56)***
  9. 死信隊列解析1(時長:19:48)***
  10. 死信隊列解析2(時長:05:18)***
  11. 延遲隊列解析(時長:44:00)
  • 任務四:RabbitMQ集群與運維

  • 任務五:RabbitMQ源碼剖析

作業(yè)說明

實現(xiàn)思路

購買頁面

支付頁面

成功支付頁面

超時訂單信息頁面

1. 在數(shù)據(jù)庫中創(chuàng)建業(yè)務相關(guān)表。

以購買拉勾課程為例称诗,一個訂單只有一個課程萍悴,且電子虛擬商品忽略庫存處理和物流信息。

  • 課程表(course):課程id寓免、課程名稱癣诱、課程簡介、課程價格袜香、課程狀態(tài)撕予、備注、刪除標識蜈首、創(chuàng)建時間实抡、創(chuàng)建者、更新時間欢策、更新者

  • 用戶表(user):用戶id澜术、用戶名稱、電話猬腰、郵箱鸟废、用戶狀態(tài)、備注姑荷、刪除標識盒延、創(chuàng)建時間缩擂、更新時間

  • 訂單表(order_info):訂單id、用戶id添寺、課程id胯盯、課程價格、訂單價格(課程價格 - 優(yōu)惠價格)计露、訂單狀態(tài)博脑、備注、刪除標識票罐、創(chuàng)建時間/下單時間叉趣、更新時間、過期時間

  • 支付記錄表(pay_info):支付id该押、用戶id疗杉、訂單id、流水id蚕礼、支付方式烟具、支付金額、支付狀態(tài)奠蹬、備注朝聋、創(chuàng)建時間/支付時間

本次作業(yè)只實現(xiàn)訂單表和支付記錄表,課程表和用戶表省略囤躁。

2. 使用Spring Boot提供restful接口玖翅,供前端頁面調(diào)用
  • 獲取課程信息:getCourseById(Integer courseId)

  • 下單:order( Long userId, Integer courseId)

  • 支付:pay(Long userId, Long orderId) 忽略通過打開第三方支付頁面進行支付流程,直接完成支付狀態(tài)

  • 獲取訂單信息:getOrderInfoById(Long orderId)

本次作業(yè)只實現(xiàn)下單割以、付款金度、獲取訂單信息,獲取課程信息省略严沥。

3. 設(shè)計前端頁面
  • 課程信息頁面:用于顯示所售課程詳細信息的頁面猜极,并提供購買按鈕,完成下單操作消玄。

  • 支付頁面:用戶在課程購買頁面中點擊購買按鈕后直接跳到待付款頁面跟伏,此時后臺已生成待付款訂單。

  • 支付成功頁面:完成支付后翩瓜,提示成功受扳。

  • 歷史訂單信息頁面:支付訂單超時的場合,用來查看超時失效的訂單信息兔跌。

因時間緊張勘高,本次作業(yè)實現(xiàn)頁面比較簡陋。

軟件版本

RabbitMQ 3.8.5
Erlang 23.0.2
MySQL 5.7
Spring Boot 2.2.8
  spring-boot-starter-web
mybatis-spring-boot-starter 2.1.3

實現(xiàn)步驟

  1. 安裝RabbitMQ(可參看課程內(nèi)容及課程講義)
  • 安裝socat依賴
  • 安裝Erlang
  • 安裝RabbitMQ
  • 啟用RabbitMQ的管理插件
  • 開啟RabbitMQ
  • 添加用戶、標簽和權(quán)限
  1. 設(shè)計數(shù)據(jù)庫表結(jié)構(gòu)

  2. 搭建Spring Boot項目

建議首先按照課程視頻和講義搭建一個最簡單的RabbitMQ工程华望,啟動并實現(xiàn)消息的發(fā)送和接收蕊蝗。(參看課程任務二:18. SpringBoot整合RabbitMQ、講義1.7 SpringBoot整合RabbitMQ)

然后再根據(jù)作業(yè)要求修改和添加相應代碼赖舟。

步驟如下:

  • 配置文件application.yml中設(shè)置mysql數(shù)據(jù)庫和rabbitmq鏈接地址
  • RabbitConfig.java中定義交換器和隊列蓬戚。包括延遲和死信,設(shè)置好延遲時間
  • OrderController.java對外提供生產(chǎn)者的restful接口
  • OrderService.java實現(xiàn)下單業(yè)務處理宾抓。下單時發(fā)送消息到延遲隊列子漩,并使用@RabbitListener實現(xiàn)死信隊列的監(jiān)聽處理,修改超時訂單的數(shù)據(jù)庫狀態(tài)
  • PayController.java對外提供消費者的restful接口(可以考慮新建另外的項目石洗,獨立部署)
  • PayService.java實現(xiàn)支付業(yè)務處理幢泼。支付時判斷訂單狀態(tài),返回相應結(jié)果
  • XxxMapper.javaXxxMapper.xml實現(xiàn)數(shù)據(jù)庫操作
  • 編寫下單和支付的html頁面(可以參看我的速推前端頁面介紹)

測試流程

  1. 用戶下單后展示等待付款頁面劲腿。確認訂單是否生成旭绒,TTL隊列中是否有消息鸟妙。
  2. 在頁面上點擊付款的按鈕焦人,如果不超時(10秒內(nèi)),則跳轉(zhuǎn)到付款成功頁面重父。確認訂單狀態(tài)花椭。
  3. 重新下單,超時支付房午,則跳轉(zhuǎn)到用戶歷史賬單中查看因付款超時而取消的訂單矿辽。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市郭厌,隨后出現(xiàn)的幾起案子袋倔,更是在濱河造成了極大的恐慌,老刑警劉巖折柠,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宾娜,死亡現(xiàn)場離奇詭異,居然都是意外死亡扇售,警方通過查閱死者的電腦和手機前塔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來承冰,“玉大人华弓,你說我怎么就攤上這事±梗” “怎么了寂屏?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我凑保,道長冈爹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任欧引,我火速辦了婚禮频伤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芝此。我一直安慰自己憋肖,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布婚苹。 她就那樣靜靜地躺著岸更,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膊升。 梳的紋絲不亂的頭發(fā)上怎炊,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音廓译,去河邊找鬼评肆。 笑死,一個胖子當著我的面吹牛非区,可吹牛的內(nèi)容都是我干的瓜挽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼征绸,長吁一口氣:“原來是場噩夢啊……” “哼久橙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起管怠,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淆衷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渤弛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祝拯,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年暮芭,在試婚紗的時候發(fā)現(xiàn)自己被綠了鹿驼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辕宏,死狀恐怖畜晰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瑞筐,我是刑警寧澤凄鼻,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響块蚌,放射性物質(zhì)發(fā)生泄漏闰非。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一峭范、第九天 我趴在偏房一處隱蔽的房頂上張望财松。 院中可真熱鬧,春花似錦纱控、人聲如沸辆毡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舶掖。三九已至,卻和暖如春尔店,著一層夾襖步出監(jiān)牢的瞬間眨攘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工嚣州, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鲫售,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓避诽,卻偏偏與公主長得像龟虎,于是被迫代替她去往敵國和親璃谨。 傳聞我的和親對象是個殘疾皇子沙庐,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354