發表於2024-12-29
《RabbitMQ實戰指南》從消息中間件的概念和RabbitMQ的曆史切入,主要闡述RabbitMQ的安裝、使用、配置、管理、運維、原理、擴展等方麵的細節。《RabbitMQ實戰指南》大緻可以分為基礎篇、進階篇和高階篇三個部分。基礎篇首先介紹RabbitMQ的基本安裝及使用方式,方便零基礎的讀者以最舒適的方式融入到RabbitMQ之中。其次介紹RabbitMQ的基本概念,包括生産者、消費者、交換器、隊列、綁定等。之後通過Java語言講述瞭客戶端如何與RabbitMQ建立(關閉)連接、聲明(刪除)交換器、隊列、綁定關係,以及如何發送和消費消息等。進階篇講述RabbitMQ的 TTL、死信、延遲隊列、優先級隊列、RPC、消息持久化、生産端和消費端的消息確認機製等內容,以期讀者能夠掌握RabbitMQ的使用精髓。《RabbitMQ實戰指南》中間篇幅主要從RabbitMQ 的管理、配置、運維這三個角度來為讀者提供幫助文檔及解決問題的思路。高階篇主要闡述RabbitMQ的存儲機製、流控及鏡像隊列的原理,深入地講述RabbitMQ的一些實現細節,便於讀者加深對RabbitMQ的理解。《RabbitMQ實戰指南》還涉及網絡分區的概念,此內容可稱為魔鬼篇,需要掌握前麵的所有內容纔可理解其中的門道。《RabbitMQ實戰指南》最後講述的是RabbitMQ的一些擴展內容及附錄,供讀者參考之用。
計算機碩士畢業,在互聯網公司擔任高級開發工程師,從事消息中間件的研究及開發,主要包括RabbitMQ和Kafka。
第1章 RabbitMQ簡介 1
1.1 什麼是消息中間件 2
1.2 消息中間件的作用 3
1.3 RabbitMQ的起源 4
1.4 RabbitMQ的安裝及簡單使用 6
1.4.1 安裝Erlang 7
1.4.2 RabbitMQ的安裝 8
1.4.3 RabbitMQ的運行 8
1.4.4 生産和消費消息 10
1.5 小結 14
第2章 RabbitMQ入門 15
2.1 相關概念介紹 16
2.1.1 生産者和消費者 16
2.1.2 隊列 18
2.1.3 交換器、路由鍵、綁定 19
2.1.4 交換器類型 21
2.1.5 RabbitMQ運轉流程 23
2.2 AMQP協議介紹 26
2.2.1 AMQP生産者流轉過程 27
2.2.2 AMQP消費者流轉過程 29
2.2.3 AMQP命令概覽 30
2.3 小結 32
第3章 客戶端開發嚮導 33
3.1 連接RabbitMQ 34
3.2 使用交換器和隊列 36
3.2.1 exchangeDeclare方法詳解 37
3.2.2 queueDeclare方法詳解 39
3.2.3 queueBind方法詳解 41
3.2.4 exchangeBind方法詳解 42
3.2.5 何時創建 43
3.3 發送消息 44
3.4 消費消息 46
3.4.1 推模式 46
3.4.2 拉模式 49
3.5 消費端的確認與拒絕 50
3.6 關閉連接 52
3.7 小結 54
第4章 RabbitMQ進階 55
4.1 消息何去何從 56
4.1.1 mandatory參數 56
4.1.2 immediate參數 57
4.1.3 備份交換器 58
4.2 過期時間(TTL) 60
4.2.1 設置消息的TTL 60
4.2.2 設置隊列的TTL 62
4.3 死信隊列 63
4.4 延遲隊列 65
4.5 優先級隊列 67
4.6 RPC實現 68
4.7 持久化 72
4.8 生産者確認 74
4.8.1 事務機製 74
4.8.2 發送方確認機製 77
4.9 消費端要點介紹 84
4.9.1 消息分發 85
4.9.2 消息順序性 87
4.9.3 棄用QueueingConsumer 88
4.10 消息傳輸保障 90
4.11 小結 91
第5章 RabbitMQ管理 92
5.1 多租戶與權限 93
5.2 用戶管理 97
5.3 Web端管理 99
5.4 應用與集群管理 105
5.4.1 應用管理 105
5.4.2 集群管理 108
5.5 服務端狀態 111
5.6 HTTP API接口管理 121
5.7 小結 130
第6章 RabbitMQ配置 131
6.1 環境變量 132
6.2 配置文件 136
6.2.1 配置項 137
6.2.2 配置加密 140
6.2.3 優化網絡配置 142
6.3 參數及策略 146
6.4 小結 151
第7章 RabbitMQ運維 152
7.1 集群搭建 153
7.1.1 多機多節點配置 154
7.1.2 集群節點類型 158
7.1.3 剔除單個節點 160
7.1.4 集群節點的升級 162
7.1.5 單機多節點配置 163
7.2 查看服務日誌 164
7.3 單節點故障恢復 172
7.4 集群遷移 173
7.4.1 元數據重建 174
7.4.2 數據遷移和客戶端連接的切換 183
7.4.3 自動化遷移 185
7.5 集群監控 189
7.5.1 通過HTTP API接口提供監控數據 189
7.5.2 通過客戶端提供監控數據 196
7.5.3 檢測RabbitMQ服務是否健康 199
7.5.4 元數據管理與監控 203
7.6 小結 205
第8章 跨越集群的界限 206
8.1 Federation 207
8.1.1 聯邦交換器 207
8.1.2 聯邦隊列 214
8.1.3 Federation的使用 216
8.2 Shovel 223
8.2.1 Shovel的原理 224
8.2.2 Shovel的使用 227
8.2.3 案例:消息堆積的治理 233
8.3 小結 235
第9章 RabbitMQ高階 237
9.1 存儲機製 238
9.1.1 隊列的結構 240
9.1.2 惰性隊列 243
9.2 內存及磁盤告警 245
9.2.1 內存告警 246
9.2.2 磁盤告警 249
9.3 流控 250
9.3.1 流控的原理 250
9.3.2 案例:打破隊列的瓶頸 253
9.4 鏡像隊列 263
9.5 小結 269
第10章 網絡分區 270
10.1 網絡分區的意義 271
10.2 網絡分區的判定 272
10.3 網絡分區的模擬 275
10.4 網絡分區的影響 279
10.4.1 未配置鏡像 279
10.4.2 已配置鏡像 282
10.5 手動處理網絡分區 284
10.6 自動處理網絡分區 289
10.6.1 pause-minority模式 289
10.6.2 pause-if-all-down模式 290
10.6.3 autoheal模式 291
10.6.4 挑選哪種模式 292
10.7 案例:多分區情形 293
10.8 小結 296
第11章 RabbitMQ擴展 297
11.1 消息追蹤 298
11.1.1 Firehose 298
11.1.2 rabbitmq_tracing插件 301
11.1.3 案例:可靠性檢測 305
11.2 負載均衡 310
11.2.1 客戶端內部實現負載均衡 312
11.2.2 使用HAProxy實現負載均衡 314
11.2.3 使用Keepalived實現高可靠負載均衡 318
11.2.4 使用Keepalived+LVS實現負載均衡 325
11.3 小結 330
附錄A 集群元數據信息示例 331
附錄B /api/nodes接口詳細內容 333
附錄C 網絡分區圖譜 336
初識RabbitMQ時,我在網上搜尋瞭大量的相關資料以求自己能夠快速地理解它,但是這些資料零零散散而又良莠不齊。後來又寄希望於RabbitMQ的相關書籍,或許是它們都非齣自國人之手,裏麵的陳述邏輯和案例描述都不太符閤我自己的思維習慣。最後選擇從頭開始自研RabbitMQ,包括閱讀相關源碼、翻閱官網的資料以及進行大量的實驗等。
平時我也有寫博客的習慣,通常在工作中遇到問題時會結閤所學的知識整理成文。隨著一篇篇的積纍,也有好幾十篇的內容,漸漸地也就有瞭編撰成書的想法。
本書動筆之時我曾信心滿滿,以為能夠順其自然地完成這本書,但是寫到四分之一時,發現並沒有想象中的那麼簡單。怎樣纔能讓理解領悟匯聚成通俗易懂的文字錶達?怎樣纔能讓書中內容前後貫通、由淺入深地闡述?有些時候可能知道怎樣做、為什麼這麼做,而沒有反思其他情形能不能做、怎樣做。為瞭解決這些問題,我會反復對書中的內容進行迭代,對某些模糊的知識點深耕再深耕,對某些案例場景進行反復的測試,不斷地完善。
在本書編寫之時,我常常迴想當初作為小白之時迫切地希望能夠瞭解哪些內容,這些內容又希望以怎樣的形式展現。所以本書前麵幾章的內容基本上是站在一個小白的視角來為讀者做一個細膩的講解,相信讀者在閱讀完這些內容之後能夠具備閤理使用RabbitMQ的能力。在後麵的章節中知識點會慢慢地深入,每閱讀一章的內容都會對RabbitMQ有一個更加深刻的認知。
本書中的所有內容都具備理論基礎並全部實踐過,書中的內容也是我在工作中的實踐積纍,希望本書能夠讓初學者對RabbitMQ有一個全麵的認知,也希望有相關經驗的人士可以從本書中得到一些啓發,汲取一些經驗。
內容大綱
本書共11章,前後章節都有相關的聯係,基本上按照由淺入深、由錶及裏的層次逐層進行講解。如果讀者對其中的某些內容已經掌握,可以選擇跳過而翻閱後麵的內容,不過還是建議讀者按照先後順序進行閱讀。
第1章主要針對消息中間件做一個摘要性介紹,包括什麼是消息中間件、消息中間件的作用及特點等。之後引入RabbitMQ,對其曆史和相關特點做一個簡要概述。本章最後介紹RabbitMQ的安裝及生産、消費的使用示例。
第2章主要講述RabbitMQ的入門知識,包括生産者、消費者、隊列、交換器、路由鍵、綁定、連接及信道等基本術語。本章還闡述瞭RabbitMQ與AMQP協議的對應關係。
第3章主要介紹RabbitMQ客戶端開發的簡單使用,按照一個生命周期對連接、創建、生産、消費及關閉等幾個方麵進行宏觀的介紹。
第4章介紹數據可靠性的一些細節,並展示RabbitMQ的幾種已具備或衍生的高級特性,包括TTL、死信隊列、延遲隊列、優先級隊列、RPC等,這些功能在實際使用中可以讓某些應用的實現變得事半功倍。
第5章主要圍繞RabbitMQ管理這個主題展開,包括多租戶、權限、用戶、應用和集群管理、服務端狀態等方麵,並且從側麵講述rabbitmqctl工具和rabbitmq_management插件的使用。
第6章主要講述RabbitMQ的配置,以此可以通過環境變量、配置文件、運行時參數(和策略)等三種方式來定製化相應的服務。
第7章主要圍繞運維層麵展開論述,主要包括集群搭建、日誌查看、故障恢復、集群遷移、集群監控這幾個方麵。
第8章主要講述Federation和Shovel這兩個插件的使用、細節及相關原理。區彆於第7章中集群的部署方式,Federation和Shovel可以部署在廣域網中,為RabbitMQ提供更廣泛的應用空間。
第9章介紹RabbitMQ相關的一些原理,主要內容包括RabbitMQ存儲機製、磁盤和內存告警、流控機製、鏡像隊列。瞭解這些實現的細節及原理十分必要,它們可以讓讀者在遇到問題時能夠透過現象看本質。
第10章主要圍繞網絡分區進行展開,具體闡述網絡分區的意義,如何查看和處理網絡分區,以及網絡分區所帶來的影響。
第11章主要探討RabbitMQ的兩個擴展內容:消息追蹤及負載均衡。消息追蹤可以有效地定位消息丟失的問題。負載均衡本身屬於運維層麵,但是負載均衡一般需要藉助第三方的工具——HAProxy、LVS等實現,故本書將其視為擴展內容。
讀者討論
由於作者水平有限,書中難免有錯誤之處。在本書齣版後的任何時間,若你對本書有任何的疑問,都可以通過 zhuzhonghua.ideal@qq.com 發送郵件給作者,也可以到作者的個人博客http://blog.csdn.net/u013256816留言,嚮作者闡述你的建議和想法。如若收到相關信息,作者都會迴復。
緻謝
首先要感謝我身處的平颱,讓我有機會深入地接觸RabbitMQ。同時也要感謝我身邊的同事,正因為有瞭你們的鼓勵和幫助,纔讓我能夠迅速成長,本書的問世,離不開與你們在工作中積纍的點點滴滴。
感謝在我博客中提問、留言的網友,有瞭你們的意見和建議纔能讓本書更加完善。
感謝博文視點的編輯們,本書能夠順利、迅速地齣版,多虧瞭你們的敬業精神和一絲不苟的工作態度。
最後還要感謝我的傢人,在我占用絕大部分的業餘時間進行寫作的時候,能夠給予我極大的寬容、理解和支持,讓我能夠全身心地投入到寫作之中。
硃忠華
RabbitMQ實戰指南 下載 mobi pdf epub txt 電子書 格式 2024
RabbitMQ實戰指南 下載 mobi epub pdf 電子書使用方便,價格實惠。
評分東西不錯,京東購買放心,下次繼續。
評分還不錯,學習一下
評分書收到瞭,送貨速度快
評分還是比較不錯,學到很多
評分非常好很詳細
評分特意過一陣子纔來評論,感覺挺不錯的
評分彆人推薦的,感覺很不錯,好好看完吧?
評分非常實用的mq書,從作者博客跟過來的,有保障,比老外寫的易懂,符閤實際開發需求!
RabbitMQ實戰指南 mobi epub pdf txt 電子書 格式下載 2024