|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《RabbitMQ实战:高效部署分布式消息队列》
. b* _5 C) G. Z5 J+ l% v6 ljava电子书推荐理由:如何使用RabbitMQ消息通信服务器,构建和管理用不同语言编写的可伸缩应用。这很容易上手。你将学习消息队列的工作原理以及RabbitMQ是如何适用的。然后,你将通过许多案例来探索实践当中的可扩展性和互操作性问题。
. [0 ~; k; y+ U* u5 K& f学习要点:$ z, _1 |- X9 B* K' i: g
1、学习基本消息通信设计模式
3 k; U0 B3 L6 g, X+ Y: a: e2、使用模式来满足按需扩展/ _/ Z/ E( K% E% P# z
3、整合PHP编写的前端和用任何语言编写的后端
9 `; d6 K k! Z8 S4、在30分钟内实现发布/订阅的告警服务
" z3 J0 Q* S/ b9 |0 ?4 B. y- F5 、配置RabbitMQ内建集群
V: N* ~% H5 W9 F7 x2 ~9 f6、 监控、管理、扩展并调试RabbitMQ+ N$ p+ Z$ u' K5 ^" ?/ |2 ~
9 @$ A7 o2 Z+ N7 X; i作者:(美)维德拉(Videla ,A.), (美)威廉姆斯(Williams,J.J.W.) 著,汪佳南 译
7 D: i! W% w. v出版社:电子工业出版社
. i I, L0 H) D$ K3 C% J. V B出版时间:2015-10-01
+ d3 j9 @# r/ d% ]. y" V- w5 z* @6 w! q. ]3 Z/ ^; K! ^6 z, S1 }8 m
+ M1 n o4 o( a; |
8 |7 s3 U, U' M; `4 _$ y2 M' H' ~. |0 l0 T8 u0 B
% r; j% K$ z1 b# A/ z2 @3 N' V
java电子书目录:9 j9 h% H$ Y9 F' Z
: Q* { O" a9 S9 P; R
( Z0 ~, m! P4 |0 N' s: m$ U第1章 天降奇兵1( ^0 m& a4 i1 R, {+ L& D4 c/ g7 b
1.1 住在别人的地下城堡 3
9 d+ i& f9 b, K" u+ O1.2 救世主AMQP 51 N+ E, }( T# J5 }' w- n7 H; p2 ]/ r
1.3 RabbitMQ简史 5
4 V, S& _$ V0 m) ~' l! s/ w6 ^1.4 百里挑一 8 [6 _* z- q8 m7 I
1.5 在UNIX系统上安装RabbitMQ 8 w$ M/ J+ K! Q
1.5.1 为什么环境很重要——生活在Erlang 的世界里 9) o' n( j+ E$ t; g. A: r: E/ h
1.5.2 获取安装包 9
3 K4 U$ Q# P. I5 Z+ M; ]1.5.3 设置文件夹结构 9
0 Q; L& Z' a# U3 a0 \1.5.4 首次运行Rabbit 105 H! k; d4 k$ B( y
1.6 总结 12/ [: E7 O# ?" b; N" k
第2章 理解消息通信13
) N% u" P. c+ Z, v: o6 F2.1 消费者和生产者(这可不是经济学课程哦) 14
. J9 S Q0 E; [* ?. ^2.2 从底部开始构造:队列 17
9 a) ~: {; U1 t2.3 联合起来:交换器和绑定 22* a& i7 J) A: W5 u( q
2.4 多租户模式:虚拟主机和隔离 27
. O @8 r. V; u% v9 {; M" Z% v2.5 我的消息去哪儿了呢?持久化和你的策略 28
$ y& E$ x+ }8 @& I3 L$ P2.6 把所有内容结合起来:一条消息的一生 32
8 O6 R+ A( l5 [% P/ d7 K& p2.7 使用发送方确认模式来确认投递 37. p( Y% Q: ]6 V
2.8 总结 40
( F& Y4 F- Q# W& O. o& j8 D第3章 运行和管理Rabbit 42 \" ^0 k n& ]/ `: U4 ]
3.1 服务器管理 43
6 f1 C/ x0 G) ]; V- Z3 q6 W& H3.1.1 启动节点 43
0 M* c7 J. [; }6 r$ \+ [9 _3.1.2 停止节点 45/ f2 c! e- B: ^$ i+ c! {! y( F, x0 P
3.1.3 关闭和重启应用程序:有何差别 46
6 M n# R: C+ y- o8 Q3 {; e3.1.4 Rabbit 配置文件 46
( H) j: M2 i/ `6 ?+ V! [3.2 请求许可 48- g' f _, g" Y* ]
3.2.1 管理用户 49
) l4 a$ \1 I7 |; J" x3.2.2 Rabbit 的权限系统 50
4 t. _: j6 e r3.3 检查 54
! K8 c0 V* }9 C9 ?4 Y8 e' q3.3.1 查看数据统计 54( `2 w9 A9 s/ B% o
3.3.2 理解RabbitMQ 日志 592 Q) ?; G7 g3 x: n3 M
3.4 修复Rabbit:疑难解答 63$ r" u& O6 b/ o' Z }: v- n( m
由badrpc、nodedown 和其他Erlang 引起的问题 63
2 k6 U! f! `; c) R1 h1 ~3.5 总结 68& V" r+ D# C3 v: q
第4章 解决Rabbit相关问题:编码与模式69
+ V6 o S4 [6 E+ R4.1 解耦风雨路:谁将我们推向消息通信 70/ I: H% ?$ ^: d& g3 b- `' p
4.1.1 异步状态思维(分离请求和动作) 70
9 |2 K! ]5 _) @8 \# [4.1.2 提供扩展性:没有负载均衡器的世界 73
) q3 x x" g4 W$ y$ \4.1.3 零成本API :语言不应成为枷锁 73( a5 [1 g" j9 y) c- l
4.2 发后即忘模型 747 O- e+ ]2 L8 o6 h1 @
4.2.1 发送告警 75
4 z7 d# B; W. h4.2.2 并行处理 84
5 J1 v, ]0 ?1 Q& C2 M4.3 别忘了:用RabbitMQ实现RPC并等待响应 92
3 c8 p) P3 m# i) b6 j4.3.1 私有队列和发送确认 93
, m `5 i2 a$ f3 }. g1 I6 J. v4.3.2 使用reply_to 来实现简单的JSON RPC 93/ {8 {' b6 ~; M% k. A; p4 E. b% p! O
4.4 总结 98
; |+ \6 A6 M7 Z: W$ Y( y& i第5章 集群并处理失败99
% s- z- p9 V+ ?) B$ N1 J$ s5.1 开足马力:RabbitMQ集群 100# b- b, c* O# P( K# s3 b* V# z! M
5.2 集群架构 101( ]1 B" H: S+ G+ S7 r/ L
5.2.1 集群中的队列 101
+ b: q# Z: I6 c8 k r( ~' n5.2.2 分布交换器 103
9 g4 l7 R0 Q/ r5.2.3 是内存节点还是磁盘节点 1048 E* c: [. ]) o5 X( u0 p9 c3 e* T
5.3 在你的笔记本电脑上设置集群 106* }" r; @. F- E, o) Y
5.4 将节点分布到更多的机器上 110: V7 r, K- }; o1 t/ l* n
5.5 升级集群节点 1140 B+ X8 y/ I ]4 z1 W
5.6 镜像队列和保留消息 115
& @2 I' }7 K. J6 P B/ p) l# }. W5.6.1 声明并使用镜像队列 115
7 R6 s8 R; @! K s7 ^5.6.2 镜像队列工作原理 118( q; o$ O; I) V6 I6 F k2 b
5.7 总结 120
3 [# P5 S/ ]+ c# C* {8 o3 X第6章 从故障中恢复121
4 }" w* o& P& E- t# O6.1 为Rabbit做负载均衡 122: ^+ u0 r4 n" _
6.1.1 安装HAProxy 124
( _* a, `* q7 q; r) u0 W' P6.1.2 配置HAProxy 125, q9 P3 \& s6 E2 S0 ~3 X
6.2 连接丢失和故障转移 1272 P2 S: b9 z+ p- I# Y$ G2 g
6.3 总结 134
9 d6 P9 s+ w( x第7章 warren和Shovel:故障转移和复制 1354 C* x: k/ N, e/ \* Y
7.1 warren:另一种集群方式 136* t$ j, `7 f8 b. ^# T% u
7.2 设定负载均衡器——基于主/从的集群 138
2 r1 W! `) H+ Z u7 l+ X; V7.3 远距离通信和复制 142. H& }8 O* r+ ]6 i( i b; \/ k( F
7.3.1 给Rabbit 装备Shovel :Shovel 插件介绍 1427 L4 H' q4 l7 U6 J
7.3.2 安装Shovel 145- L6 w6 s2 _7 I
7.3.3 配置并运行Shovel 146
0 `+ f4 {* T( Q0 E3 Q5 w. z7.4 总结 152. Y! y& h# B# l0 o: x% Q& W4 k& B
第8章 从Web端管理RabbitMQ 154
5 z" A) D. q( N" s, Z8.1 超越rabbitmqctl:RabbitMQ Management插件 155/ v$ B! o6 S8 n7 I5 ?$ d
8.1.1 为何需要Management 插件 1552 W/ V% x! t9 g- z/ l* O% p
8.1.2 Management 插件功能 155
" e1 [5 }- W- B& l* o8.1.3 启用Management 插件 156+ |8 s3 s7 F! B1 P
8.2 从Web控制台来管理RabbitMQ 158. g9 l: C( n. t
8.2.1 监控Erlang VM 158
' a* N7 \; y& a1 }8.2.2 从JSON 文件导入配置 159/ }& A0 b( |1 f4 D& n$ {
8.3 从Web控制台管理用户 160
4 o. c0 |% z7 U: b9 S8.3.1 创建用户 161
/ m t9 }5 V8 ?* J8.3.2 管理用户的权限 162) ?* Y" H" J1 \% Z) {7 x& n
8.4 从Web控制台管理交换器和队列 163' u. g: S9 Y1 k: h- K
8.4.1 列出队列信息 165* E* O, l! [( j; V# {& c9 s5 o
8.4.2 创建队列 166
' K) [7 `! W* R2 P u8.5 回到命令行 168
8 ?; E& V2 f8 j4 R: }% o8.5.1 为什么需要另一个CLI 1688 P) `. J# t& v8 M" V2 L
8.5.2 CLI 管理:一种更简单的方式 170) y; d2 R4 S, N3 W# M
8.5.3 安装rabbitmqadmin 脚本 170
6 T' X) G# }- f- Z. g8.5.4 清空队列、创建交换器等 171
/ D& K( L- O9 w7 O7 |2 e8.6 总结 172& h) F7 [* P& ?: Q/ j
第9章 使用REST API控制Rabbit 173+ H0 m3 f2 v. p' s9 N: t
9.1 能用RabbitMQ REST API做什么 175
8 K s, a* y/ Q" n0 x, _3 V9.2 对客户端授权访问 177- L3 V1 K4 L' `/ h) Y) J% u ^7 @
9.3 访问数据统计 178' V# r8 Q7 u: I$ _! B& f6 N" r0 X( b
9.4 自动化vhost和用户配置 181
8 i2 @2 X+ n( [9.5 总结 .186
0 w3 p1 b- O9 s+ K第10章 监控187
+ F( ]8 s+ Q. M5 W+ I) k# o10.1 监控RabbitMQ:密切关注你的warren 188
$ B" D( P/ x; D" d; ]1 k( l8 w10.1.1 为Nagios 编写健康检测 188
! ]8 g7 s' {1 x3 y z% w1 q10.1.2 使用AMQP 模拟检测来确认RabbitMQ 是否运行 190
7 ]9 \ o5 ^7 P, o10.1.3 使用REST API 来检测 193
8 K- K x1 s9 y% ?10.1.4 监控配置文件修改 1961 [( K4 G4 w2 \( O! O
10.1.5 监控集群状态 2017 A4 b2 o0 F& I( u4 G+ M* h
10.2 确保消费者正常工作 206 H* o h" w6 F% N* O
10.2.1 通过AMQP 监控队列等级 208/ J% B# R1 @: g0 C" i5 ?- u4 d. `
10.2.2 使用REST API 来监控队列级别 212' T/ H& I7 U1 {3 G. ~/ R% D
10.2.3 建立队列的消息计数基准经验法则 215
& P$ C8 m0 f, _% l* G( y% X' }10.3 总结216
: ]) Q4 H9 o( D" v8 K第11章 提升性能,保障安全2177 s [0 K0 T9 E* i/ r& v; T3 C9 Y
11.1 对速度的需求 218
% J$ b+ K( L; a( I" m$ R2 J" A7 J11.1.1 消息持久化 218
# x# H# T5 T% F6 u/ P6 |11.1.2 消息确认 219; g4 `# B! J4 ?3 N2 f
11.1.3 路由算法和绑定规则 219
Q* V) t/ x* `" y6 q& n11.1.4 投递消息 221# v: M: P1 c% p
11.2 内存使用率和进程限制 2237 j4 U$ q1 s( |" f- O% J- d
11.2.1 内存使用率 223
( H& t, x! D# x$ a2 s& E11.2.2 Erlang 进程计数 2266 D6 ]) z4 ?$ |3 B
11.3 SSL连接 ..227
( U. D8 _* H9 A9 i) N& c% {! H- n9 w11.3.1 SSL 证书.2286 I& M/ h7 C C
11.3.2 设置证书颁发机构 ..229
6 i/ m* `4 D+ m9 k A2 l. k6 ~11.3.3 生成根证书 233
! `3 |: R! z. n4 ?6 ]11.3.4 生成服务器端证书 234
! }, C3 K, Y: q1 v: P; @11.3.5 生成客户端证书 235. q L: t+ e6 i2 F5 K- C
11.3.6 启用RabbitMQ 的SSL 监听器 236
/ G" } L* B' Y. q; \- {11.3.7 测试你的RabbitMQ SSL 设置 237
* y) s" g$ m: b- B, E4 j K. f0 h8 `11.4 总结 239
9 L& v7 y V; V h* U第12章 聪明的Rabbit:扩展RabbitMQ241
6 t; O' U+ }8 s" {7 h) X8 u) Y12.1 RabbitMQ插件 242
) z7 V' }) I3 |3 _: R( K12.1.1 你可以用插件做什么 242: ]4 H3 }! ]( x( ~
12.1.2 在哪里可以找到插件 244" z5 d* m7 |( `* d9 [
12.1.3 安装插件 244
2 y; s# w W% V3 L" [12.1.4 移除插件 245
$ ~ B; ?0 l) t1 z7 g" ?/ s+ K; q12.2 制作你自己的插件 2473 ]; R5 Y, `3 T0 t
12.2.1 获取RabbitMQ Public Umbrella 248
1 d0 r9 M2 n' ~2 ?# P12.2.2 设置文件夹结构 249
( N6 I6 n6 q0 c+ H9 D4 l12.2.3 包含插件构建系统 250, w w, L/ }5 J- r) c2 p3 J
12.2.4 创建Erlang 应用文件 250. t" {. O) a; ` U
12.3 创建自定义交换器模块 2521 P7 L$ n$ [7 g+ x( s3 l
12.3.1 将交换器注册到RabbitMQ 254" j% P5 c H- l
12.3.2 实现交换器behaviour 257
1 N2 W2 l: F- ?3 i12.3.3 编译自定义交换器 264
% t" f( e$ S0 F12.3.4 测试你的插件 267
& b( J0 D0 x' P; Y6 Z# i12.4 总结 271+ ^! {" i( {( ?+ l' {; n T* D
附录A 在Java和.NET上使用Rabbit 273
" b4 U- [3 D! A; Y H& U0 n附录B 在线资源302
! r* j) c7 s1 W9 H& p: P附录C 在Windows上安装RabbitMQ 307
& Q1 @' M6 e5 g. B& i
6 d* u& w1 t$ Q5 \7 _. c
" D& V/ n5 d0 r# q百度网盘下载地址链接(百度云)检索下载地址:, h. e0 H9 ?% h
7 p8 n2 W2 Z8 h' @2 P
" n! v5 Q# p) y$ _. a: {4 B* z# t2 M" s) K
9 g) ?( t8 l% i" E; I+ d4 H3 r, H* @0 i
; p: C3 J& Z7 I2 E2 Q' c i
2 l9 ?5 G! Z# F' E1 a( X |
|