|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《RabbitMQ实战:高效部署分布式消息队列》
3 f) f* W) K# Z9 h" s- }java电子书推荐理由:如何使用RabbitMQ消息通信服务器,构建和管理用不同语言编写的可伸缩应用。这很容易上手。你将学习消息队列的工作原理以及RabbitMQ是如何适用的。然后,你将通过许多案例来探索实践当中的可扩展性和互操作性问题。5 N9 E9 f! f9 @8 H4 |2 f( J
学习要点:
9 `# h, j. E1 _: b- f1、学习基本消息通信设计模式! k7 C/ I, f5 a1 {% u' h
2、使用模式来满足按需扩展
$ X% ]* n' q1 T0 K6 w* \# B3、整合PHP编写的前端和用任何语言编写的后端6 l% J% @) w6 ]/ z: S7 }+ ^
4、在30分钟内实现发布/订阅的告警服务5 j8 Y- Y* m. n# P
5 、配置RabbitMQ内建集群8 Y6 T8 ]$ n" ]
6、 监控、管理、扩展并调试RabbitMQ
! H0 j$ v# ~0 O+ Q
_" y7 ?: a: \作者:(美)维德拉(Videla ,A.), (美)威廉姆斯(Williams,J.J.W.) 著,汪佳南 译* ^3 X4 |, U( `( W9 }, n
出版社:电子工业出版社5 ?5 o0 q9 J# ?! F
出版时间:2015-10-01( R9 I% v* g& g$ E" q! C* e
* m# _' Q4 Y9 @( x6 B i% _6 {- u% l* o
3 }9 y5 r; T# }2 W% A# a" x
# k$ T8 ^2 ?) p0 V: ^) @5 z6 E0 L
. s9 ]6 |: j, a6 e6 T4 {7 j
& m( G3 c4 G* T2 J3 }2 S0 _java电子书目录:* @' k2 D( s8 ~% m* f+ M
2 `. ]8 J+ _" h6 k. U+ `8 s
H7 M% t5 U; Y6 o& ]0 M
第1章 天降奇兵1
2 B' [# S' t- B0 m1.1 住在别人的地下城堡 3
* {9 A! z/ U4 o, ]1.2 救世主AMQP 5& @$ L" J2 B( C7 A
1.3 RabbitMQ简史 5
& b1 E5 q$ I" X) _1.4 百里挑一 8
4 I! P& ~3 Q+ H. t6 _4 x1.5 在UNIX系统上安装RabbitMQ 8! P8 C- P( V9 [, j7 U ~. j2 H
1.5.1 为什么环境很重要——生活在Erlang 的世界里 9- v) |9 C- s0 A2 [' Z0 `
1.5.2 获取安装包 90 N' v( L- S) {
1.5.3 设置文件夹结构 96 d- N( M, U% _& u& m
1.5.4 首次运行Rabbit 10% u7 T! z+ T. c: O/ D) \1 K+ i
1.6 总结 12# b+ e- A. g C# e! d/ P5 _! C: K/ c
第2章 理解消息通信13
& R8 V% K8 b$ _4 p# [+ G1 W7 N2.1 消费者和生产者(这可不是经济学课程哦) 147 M0 N: f5 n8 S* T" ^% W
2.2 从底部开始构造:队列 17
7 Q6 G; B- D1 a2.3 联合起来:交换器和绑定 22# Y$ x- B0 w: v, V- t: Q
2.4 多租户模式:虚拟主机和隔离 279 F( Q# T9 i# p( l- Z2 y- h
2.5 我的消息去哪儿了呢?持久化和你的策略 28
2 j \. {' ?6 M9 |8 t2.6 把所有内容结合起来:一条消息的一生 328 {" x' D, w9 B1 _. w, Y
2.7 使用发送方确认模式来确认投递 37
" i! t' W; a% ~7 Y$ v2.8 总结 40. { e' ~* [3 s8 x' V3 M: w q
第3章 运行和管理Rabbit 42
5 p, j$ o/ b* u3 Z3.1 服务器管理 43
3 {" i! F, K$ Q' U3.1.1 启动节点 431 L' l ~! B( S" I, _' b
3.1.2 停止节点 45; q9 ^ x; J) ~: A+ u6 D
3.1.3 关闭和重启应用程序:有何差别 46
: g( c7 U$ _+ A1 z% r% A6 ^3 k3.1.4 Rabbit 配置文件 46
/ i$ c9 q# p$ ~2 ^1 o3.2 请求许可 483 I9 |0 [ H9 h' M/ V% l! a
3.2.1 管理用户 49+ m6 m' W# m' z8 m, x; ]" Q: p
3.2.2 Rabbit 的权限系统 50
, w* E; J$ `& w! }3.3 检查 54
# L1 S; l4 U7 r( `6 W3.3.1 查看数据统计 54
" m& s- q7 p. J& N3.3.2 理解RabbitMQ 日志 591 e1 B1 a* g( k% I
3.4 修复Rabbit:疑难解答 63
w! P7 c7 x' }由badrpc、nodedown 和其他Erlang 引起的问题 63
! C( m6 l* z* i, k3.5 总结 68
4 |1 a/ d( N# r1 X- S+ g第4章 解决Rabbit相关问题:编码与模式69
$ ~2 ^. ~+ z: z% A* f7 B4.1 解耦风雨路:谁将我们推向消息通信 70
, V' U' F1 f, w1 \) _2 n4.1.1 异步状态思维(分离请求和动作) 70 S2 k5 d% S. _$ G+ {3 v& x3 Y% }
4.1.2 提供扩展性:没有负载均衡器的世界 73
! D. U9 s) Z( o: z4.1.3 零成本API :语言不应成为枷锁 73. }" Q3 _- {! l
4.2 发后即忘模型 74
& @9 i6 ~ z) n0 `' @& }1 W4.2.1 发送告警 75
8 T+ l# X% ^ V1 y0 o4.2.2 并行处理 84
( p7 s, n; P I# p) E& e/ [$ D4.3 别忘了:用RabbitMQ实现RPC并等待响应 92
' n& N% h! p$ ^7 ]5 [2 K# h4.3.1 私有队列和发送确认 93% n' j/ f0 c/ n( W v
4.3.2 使用reply_to 来实现简单的JSON RPC 93
8 M6 C' f3 t! w2 y: s3 B9 [& {' P4.4 总结 981 F2 c1 [$ q9 d, P# I6 P
第5章 集群并处理失败996 F& r3 J' @; G: y. C: k1 j2 N- E
5.1 开足马力:RabbitMQ集群 100* _. w8 N. L4 h; `
5.2 集群架构 101
! E; K i. K. \( r1 q* C: k6 e5.2.1 集群中的队列 101
# {8 N$ t- i) h! N" a; A5.2.2 分布交换器 103
9 @- n0 A+ ^" Q4 _5.2.3 是内存节点还是磁盘节点 104
$ G$ L# X6 O2 h6 w* j% Z1 y5.3 在你的笔记本电脑上设置集群 106. M5 T w1 d; `$ [
5.4 将节点分布到更多的机器上 1105 s: K, ~ H# P: _! e
5.5 升级集群节点 114( N5 ~; ?% I1 C3 Q* x" H: u" n$ I1 f- D
5.6 镜像队列和保留消息 115
. [, o m1 u, v$ @& _1 B2 u# \5.6.1 声明并使用镜像队列 115
I* {/ x9 |: d- c5.6.2 镜像队列工作原理 118' s6 }5 w' e. \* B
5.7 总结 120
% F& L% d9 H X- V6 x( u% h W第6章 从故障中恢复1217 j$ q1 S8 K: `1 G" l7 I
6.1 为Rabbit做负载均衡 122
7 r$ B( _. C1 s6.1.1 安装HAProxy 124 J) i$ j" K$ z# M e, h
6.1.2 配置HAProxy 125 K2 C6 `: t/ o3 }2 N7 R* y
6.2 连接丢失和故障转移 127/ ?' @$ U/ l# k2 F+ w& D& y
6.3 总结 134
& ^# p! r) {3 j y" k3 l第7章 warren和Shovel:故障转移和复制 135
2 X1 ~5 x6 {1 s( {7.1 warren:另一种集群方式 1361 z5 i: n3 }5 q/ D# r
7.2 设定负载均衡器——基于主/从的集群 1382 g: f* H8 K8 {1 ~) i
7.3 远距离通信和复制 142; W. t( v7 N$ I2 V
7.3.1 给Rabbit 装备Shovel :Shovel 插件介绍 142- s- j# F/ M2 y f X2 j/ x, O
7.3.2 安装Shovel 1456 u j }9 Q; x% r0 v# S I
7.3.3 配置并运行Shovel 146
& G ]9 S+ Z, z4 d, \7.4 总结 152
. @) L' v& g1 v1 j2 B" _3 Q* y3 N9 g' g第8章 从Web端管理RabbitMQ 1549 c1 z7 z: O" S9 G
8.1 超越rabbitmqctl:RabbitMQ Management插件 155* ~3 p% s2 |. R3 h) o% }
8.1.1 为何需要Management 插件 155& E$ R0 Y w% q* Y6 E7 B, ]
8.1.2 Management 插件功能 1556 x+ @1 [$ z2 j
8.1.3 启用Management 插件 156& j( ~) A2 F B6 ]
8.2 从Web控制台来管理RabbitMQ 158
/ |1 F% J) x2 d# E, O$ D1 t8.2.1 监控Erlang VM 1583 w! z/ S2 s5 H9 V2 P
8.2.2 从JSON 文件导入配置 159
6 A2 m$ E+ u9 I- ^+ k8.3 从Web控制台管理用户 160
2 s9 P6 ?% U* S9 }6 S4 x0 f# V8.3.1 创建用户 161# Y+ L0 x M8 P: J# ^5 c
8.3.2 管理用户的权限 162
4 B2 I; H, Q, ~" Y( N: o" z% @8.4 从Web控制台管理交换器和队列 163
; [; k# t1 M" \" p8.4.1 列出队列信息 165
; M4 }4 c2 K6 S8 F/ L! e& R0 \6 k$ v8.4.2 创建队列 1663 ?% E5 A' @" f- g( ?2 t$ j
8.5 回到命令行 168
, \ l3 E/ l8 |9 R5 p" Y8.5.1 为什么需要另一个CLI 168
& C' g& C9 B+ Y4 P0 v3 g( ~+ {8.5.2 CLI 管理:一种更简单的方式 170
$ [2 n" y& [% n$ ~3 g8.5.3 安装rabbitmqadmin 脚本 170
! d2 i; }% J3 Z# v1 y; B; N2 g, g8 E8.5.4 清空队列、创建交换器等 171- P0 u' I7 ]. V& w
8.6 总结 172! y& j* b" [- C0 i
第9章 使用REST API控制Rabbit 173
' ~0 C1 o9 U5 ]1 a4 j9 z0 n* e+ U9.1 能用RabbitMQ REST API做什么 175& I8 U: B1 ~0 y9 y0 H- N: B2 L
9.2 对客户端授权访问 1779 |! ^/ v l# k
9.3 访问数据统计 178- O8 |7 M( {: p) X% p2 _# T6 a" a
9.4 自动化vhost和用户配置 1810 @# \3 A) ^7 l
9.5 总结 .1864 m! A; p1 T1 d4 l
第10章 监控187. v: `* H' D' A& g9 X: Q* E
10.1 监控RabbitMQ:密切关注你的warren 188. w* J0 M7 N- u0 C% j+ Q6 R1 x
10.1.1 为Nagios 编写健康检测 188
& E1 V5 T0 F" R" P10.1.2 使用AMQP 模拟检测来确认RabbitMQ 是否运行 1908 z8 F* O3 D. D( l% k' O
10.1.3 使用REST API 来检测 193$ u9 R0 U- x' n: s
10.1.4 监控配置文件修改 1963 \9 G: ~( [0 o% o5 _- Y
10.1.5 监控集群状态 201# ?0 c+ }& G# Z. w( R. j
10.2 确保消费者正常工作 206/ V1 A; h+ k: E$ ^2 q- M
10.2.1 通过AMQP 监控队列等级 208' j$ v2 O/ g; a) c
10.2.2 使用REST API 来监控队列级别 212
+ V1 |! G1 F* w. x10.2.3 建立队列的消息计数基准经验法则 2158 ~# Z T/ _: `6 X1 q- c) @
10.3 总结216
% @& ^! V5 i* {8 s$ h( H第11章 提升性能,保障安全217# v3 B" }5 O/ h$ V$ Z
11.1 对速度的需求 218
/ T' M* N5 X: m6 g7 D11.1.1 消息持久化 218
+ Z- S0 g2 ~1 a9 C11.1.2 消息确认 219! ~* k' \4 q1 ^/ U0 Q
11.1.3 路由算法和绑定规则 2194 s3 d0 x$ Q4 N& h4 \
11.1.4 投递消息 221* d) I/ _1 I/ d7 C
11.2 内存使用率和进程限制 223
: \# ^/ {$ E N/ D' K11.2.1 内存使用率 2232 P0 [0 B% Z% { x; z
11.2.2 Erlang 进程计数 226- ^2 r4 F) t4 M1 X/ g* J* v3 K" c( L
11.3 SSL连接 ..227% b5 N5 B% I; A" V6 {. @
11.3.1 SSL 证书.228
8 s- W2 P% s4 v7 _6 I1 S" P11.3.2 设置证书颁发机构 ..2295 H- q0 s8 Y6 L
11.3.3 生成根证书 233) k4 J0 v( h& z j* \7 x
11.3.4 生成服务器端证书 234
/ K) I1 L* M: v% T11.3.5 生成客户端证书 235" X! y) R( Q1 B! _
11.3.6 启用RabbitMQ 的SSL 监听器 2369 W& P6 B0 a( K$ c7 \* Z* U
11.3.7 测试你的RabbitMQ SSL 设置 237# C: X. `; P9 p6 O/ R) N. I
11.4 总结 239
' Y& O( o7 B" {. @/ O7 c9 l* Y第12章 聪明的Rabbit:扩展RabbitMQ241 B- M$ h0 i9 Y9 j8 L X- w
12.1 RabbitMQ插件 242# Y! K. K0 s F! \ a& `9 c
12.1.1 你可以用插件做什么 242% H; T" z3 G3 w% |9 H# J
12.1.2 在哪里可以找到插件 244
6 `; W, C+ H9 D1 X12.1.3 安装插件 244
. h0 J, O1 x9 @1 d \/ W4 k X12.1.4 移除插件 245
4 U6 w# t, w5 ~, {1 f+ }12.2 制作你自己的插件 247: o: F9 e3 Y6 h! G }9 O
12.2.1 获取RabbitMQ Public Umbrella 248
* c, V3 i$ N- q1 f0 S12.2.2 设置文件夹结构 249: S4 h9 d) o1 {/ @0 n
12.2.3 包含插件构建系统 2502 Q: u' P( @( c2 L8 R' A
12.2.4 创建Erlang 应用文件 250
, ~* M! S# M" ]) Q4 i9 a2 s12.3 创建自定义交换器模块 252
' m, |( u& v, [; `: H12.3.1 将交换器注册到RabbitMQ 2543 p4 l% [* O& Z& P% f
12.3.2 实现交换器behaviour 257% ~3 K- R* d9 B2 v% x
12.3.3 编译自定义交换器 264
- u. R% b; p$ c8 q12.3.4 测试你的插件 267
2 o& y& g* d x5 U12.4 总结 271
$ W8 A+ {3 @- \' v0 }1 k, ?' Q& i( I' [附录A 在Java和.NET上使用Rabbit 273
3 i9 q! _) W' X附录B 在线资源302* h! [3 t3 b8 K* I! J! I- F2 k
附录C 在Windows上安装RabbitMQ 307, @9 _/ ?9 X5 x8 ], y/ l% X
4 k" v/ c- T& D# d( b. d8 E9 {0 g* D+ h
百度网盘下载地址链接(百度云)检索下载地址:
+ q, A8 }3 J2 L4 \: p* |6 G, u) y
5 X1 m& X( T8 o' Z8 G0 u- r
- [. U8 L; l' V
, ~( i+ x3 R) h2 _
- a" i. L$ v1 Z. M" ~6 ~. D4 o3 [9 r8 _6 L! m
|
|