|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《RabbitMQ实战:高效部署分布式消息队列》
" w! n9 K) |# a; V- Tjava电子书推荐理由:如何使用RabbitMQ消息通信服务器,构建和管理用不同语言编写的可伸缩应用。这很容易上手。你将学习消息队列的工作原理以及RabbitMQ是如何适用的。然后,你将通过许多案例来探索实践当中的可扩展性和互操作性问题。
- e4 M4 s5 J; s学习要点:
; N% Z' w" C# D% t1、学习基本消息通信设计模式
( a+ L7 n" v8 ~( Z/ D1 [2、使用模式来满足按需扩展
* F+ R2 C4 t) G+ | n3、整合PHP编写的前端和用任何语言编写的后端- R& c, @! ]1 \ l
4、在30分钟内实现发布/订阅的告警服务3 [! J) o1 _9 A, c! R/ |5 b
5 、配置RabbitMQ内建集群
o; ?% N, o! o/ y6、 监控、管理、扩展并调试RabbitMQ
! t5 T1 k6 J! v4 o6 ?7 C
* M( l" b( L! B. t% M作者:(美)维德拉(Videla ,A.), (美)威廉姆斯(Williams,J.J.W.) 著,汪佳南 译+ ]( K) v3 \9 l7 c0 E# {4 s
出版社:电子工业出版社
3 U& j4 J* W# ^9 ~5 \# O/ t+ b0 m出版时间:2015-10-013 }; i2 x! ^3 ?
; @6 b' H/ n+ V( a
6 L3 ]7 K# | x$ G% W+ b. w9 o: P+ o
. j" L7 O3 H& Q8 @( P2 T+ x0 g5 Q2 J% ?, h: j( Y
4 R9 y ^2 x2 \! B2 T% {
java电子书目录:
- [. x, p4 c! T4 J1 p4 P* F+ c2 q5 C" q' U
$ V1 }% Y# l7 z- l2 [- l# D0 g
第1章 天降奇兵1
* B: I0 c/ |. }1 G; {" P$ j1.1 住在别人的地下城堡 3
# f: a, m4 E0 y$ ]& d! W$ k1 `1.2 救世主AMQP 5
" m$ F! a& k! H0 {) X1 g* N1.3 RabbitMQ简史 5! i2 y. X, @+ Y+ t, @/ `
1.4 百里挑一 8
4 M% c% K, G/ G- }6 D1.5 在UNIX系统上安装RabbitMQ 8
+ T# ~, A* I3 T0 ]1.5.1 为什么环境很重要——生活在Erlang 的世界里 99 j2 k% V2 M! f9 V5 ?/ v) e3 h q' o! S
1.5.2 获取安装包 9
& g: C, V% c/ w0 D, ^% o1.5.3 设置文件夹结构 99 n. ?' V, P; b" |( m" @! v
1.5.4 首次运行Rabbit 10
" C: ]$ O4 K4 \1.6 总结 12
# w1 x0 o$ b9 Q/ J9 p/ Y第2章 理解消息通信13
+ r. t7 P. m7 m2 q3 W* H4 A2.1 消费者和生产者(这可不是经济学课程哦) 14. A( ?" o7 x+ P0 y& ^
2.2 从底部开始构造:队列 17
. E" _( x9 K. @5 C/ F( s! m8 z( r2.3 联合起来:交换器和绑定 220 k- `9 M* x+ P I9 n8 |, F! b# @8 C
2.4 多租户模式:虚拟主机和隔离 275 K: N" ~3 E/ b- x4 I
2.5 我的消息去哪儿了呢?持久化和你的策略 28
6 G, N1 s2 B( ]9 ~ a2.6 把所有内容结合起来:一条消息的一生 32
1 V/ s9 Y& L* K7 K2.7 使用发送方确认模式来确认投递 37
" a& p8 E( N% K3 \2.8 总结 40
% y4 J( {7 x" Q; p6 |第3章 运行和管理Rabbit 42 z; Q" ~ Z; B" G2 w m6 e* Y
3.1 服务器管理 43' F9 ^" `+ U. z1 _4 a4 J
3.1.1 启动节点 43/ W0 h+ S6 f4 |* F$ A/ V$ n V
3.1.2 停止节点 45
! u$ w7 Z3 S1 U$ G# s9 k! P3.1.3 关闭和重启应用程序:有何差别 46
: @: Y( m; C9 u5 E# B3.1.4 Rabbit 配置文件 46; {% ^# J/ Z, A3 Z% w! m9 E# x
3.2 请求许可 48 S3 q0 B# k& Z D9 }4 b
3.2.1 管理用户 49
$ B& T% ~ o0 f, E4 S3.2.2 Rabbit 的权限系统 50
& u1 t' t& ?+ y- ~3.3 检查 541 K: Q, B; C5 M& V* h
3.3.1 查看数据统计 547 p% g. ~& Y* `+ N, U) i5 e6 i
3.3.2 理解RabbitMQ 日志 59- W9 I+ ?) u8 x$ C% H
3.4 修复Rabbit:疑难解答 63
' B; ^5 W9 I( E& w由badrpc、nodedown 和其他Erlang 引起的问题 63
, { o% s/ S) i9 \& D3.5 总结 68
n% Y" y3 }. r: x& p7 z第4章 解决Rabbit相关问题:编码与模式69 q1 Z: ]* q* n3 n
4.1 解耦风雨路:谁将我们推向消息通信 70
& U5 h4 ]7 [: P# F4.1.1 异步状态思维(分离请求和动作) 70
`( W% c( |% T& e4.1.2 提供扩展性:没有负载均衡器的世界 73
* Y; m/ h5 ?) W3 C* _+ s( c# N( v4.1.3 零成本API :语言不应成为枷锁 73, ^5 ]5 I' c( ^; Q9 Y
4.2 发后即忘模型 744 q2 I# X0 K5 B& V; E- Z- s
4.2.1 发送告警 75
- |4 Y/ X$ b1 D3 {- w4.2.2 并行处理 84: _: K) S9 D( E8 y( s
4.3 别忘了:用RabbitMQ实现RPC并等待响应 92; B5 {! P% J3 G9 ]3 k+ d
4.3.1 私有队列和发送确认 93) R/ p. [6 y3 J2 s# [/ v$ O
4.3.2 使用reply_to 来实现简单的JSON RPC 93; u, F- j4 i ]
4.4 总结 98; T7 I/ s4 b1 U, ?7 k: _
第5章 集群并处理失败99
6 T! L* k+ P$ i: z8 M5.1 开足马力:RabbitMQ集群 100
, J# l5 Q3 C) W5.2 集群架构 101/ e! m& w; O. \5 z9 ?: W) a) k
5.2.1 集群中的队列 101
) v& I; ^, K1 l9 ^& F! i5.2.2 分布交换器 103& e3 @% t& j+ a+ D% K
5.2.3 是内存节点还是磁盘节点 1046 X" i. H" h" Y) a1 x) e
5.3 在你的笔记本电脑上设置集群 106! Y* o* t4 H j
5.4 将节点分布到更多的机器上 110 x% b R! b2 R7 a
5.5 升级集群节点 114: A, ]* y/ d: V3 W8 C
5.6 镜像队列和保留消息 115
5 _5 E! ^- ~8 D* G$ J; Y& J% }: w4 Z5.6.1 声明并使用镜像队列 1153 B5 x# s2 A2 p
5.6.2 镜像队列工作原理 1188 U- M- d% ^# H
5.7 总结 120) u! y. D, q5 z8 P
第6章 从故障中恢复121& w( [! }+ w5 Z
6.1 为Rabbit做负载均衡 122
* r5 L* g9 K+ W: z# T, I6.1.1 安装HAProxy 124
S& T4 C$ p, _* Z1 y3 I! V6.1.2 配置HAProxy 1257 P1 T% m; L* X- y
6.2 连接丢失和故障转移 1272 A) i( u8 `0 E' E) x; ? o @
6.3 总结 1349 I" V' X, j- m" `& F
第7章 warren和Shovel:故障转移和复制 1359 Y" x: N; R/ ?; Q% p) F. c& {
7.1 warren:另一种集群方式 136$ l# V w7 Y! |
7.2 设定负载均衡器——基于主/从的集群 138: u* N5 T- _. ?9 d( t7 ?, o
7.3 远距离通信和复制 142
7 d1 a1 O1 g$ A7 a7.3.1 给Rabbit 装备Shovel :Shovel 插件介绍 142; o5 ?' T; i: p. Q( ~* V L+ u3 C
7.3.2 安装Shovel 145 o, G# F1 [, p9 n; [
7.3.3 配置并运行Shovel 146
) \* n$ C. i* X N9 Y7 w7.4 总结 152
, g# j- `8 Z- ?! J第8章 从Web端管理RabbitMQ 1544 b0 M4 Q& g2 w _0 ]+ R3 V
8.1 超越rabbitmqctl:RabbitMQ Management插件 1551 n! {- a9 Q0 U; U" G9 i3 B
8.1.1 为何需要Management 插件 155 x' f ?$ w$ m1 ~8 c% E. U
8.1.2 Management 插件功能 155
3 I6 ?& x% J7 G+ w5 P8.1.3 启用Management 插件 156
; A# A( @6 }7 g6 r) Y' n8.2 从Web控制台来管理RabbitMQ 1580 I+ T3 @8 S1 `) p1 U1 Y
8.2.1 监控Erlang VM 158& {' q# ^: x( U9 Y3 y
8.2.2 从JSON 文件导入配置 159
/ G- U" L \ u. b8.3 从Web控制台管理用户 160: a. z& E8 m* {9 W! l
8.3.1 创建用户 161" u8 i' D2 |' J3 N3 \
8.3.2 管理用户的权限 162. w$ N3 Y+ }+ g0 }; {$ h3 k
8.4 从Web控制台管理交换器和队列 163' [2 w1 B# V7 |) D) v9 t
8.4.1 列出队列信息 165; G6 i2 J- l) G
8.4.2 创建队列 166
. H3 d* ?, G! i3 C8.5 回到命令行 168
6 y) t2 ^6 D! G8.5.1 为什么需要另一个CLI 1686 a) |0 I: P- S d
8.5.2 CLI 管理:一种更简单的方式 1702 ?7 {+ a J' K& `* R1 b
8.5.3 安装rabbitmqadmin 脚本 170
: V' m3 K- ]8 o2 z' }$ j2 _8.5.4 清空队列、创建交换器等 171- w* l! S6 d6 @! f0 x# m0 n0 n
8.6 总结 172
' f% ~* S5 L9 k* ~5 E: H7 p u第9章 使用REST API控制Rabbit 173
/ j- R7 m- H! O ~+ }) Q9.1 能用RabbitMQ REST API做什么 175
" a/ s" v5 A. `& ^, W x X* c1 r9.2 对客户端授权访问 177
' d: m# S, R2 m; }/ c& j: L- X9.3 访问数据统计 178
3 d! l: o' W M# w* t9.4 自动化vhost和用户配置 181" v9 K" V6 A! _" d( \$ ~* K4 H" P5 R
9.5 总结 .186
+ D( ^; h$ G$ R; D/ y第10章 监控187# F/ }* g+ o0 ~# ]6 u# w. B0 {& Z
10.1 监控RabbitMQ:密切关注你的warren 1884 }0 _+ r# ^- P* F9 k
10.1.1 为Nagios 编写健康检测 188( I) k- Q( x: [% B: A% V
10.1.2 使用AMQP 模拟检测来确认RabbitMQ 是否运行 190* c6 b) u. B+ Y) C
10.1.3 使用REST API 来检测 193
$ [9 P+ u* F; m0 q i8 G, ?10.1.4 监控配置文件修改 196
! l5 n `8 K$ T10.1.5 监控集群状态 201
% ?# v6 g. z/ a4 C! L4 Q$ M10.2 确保消费者正常工作 206
" l/ B3 J! o, @+ v10.2.1 通过AMQP 监控队列等级 208
2 ? E0 `" y+ b" R9 z# Q! F10.2.2 使用REST API 来监控队列级别 212
9 h% c7 Z! _$ a+ R9 i4 j; |10.2.3 建立队列的消息计数基准经验法则 215' E% {6 J% T! H# c5 r
10.3 总结2164 h9 G$ _6 U0 \* q# l9 [" h6 r- V
第11章 提升性能,保障安全217
! [4 p; e8 B2 L" e( l1 b2 B11.1 对速度的需求 218
4 o$ q& l6 f) Z11.1.1 消息持久化 218& l$ f% |- y4 [8 b3 P3 v* X
11.1.2 消息确认 219) W) ~- |2 t5 i( {- j0 V! L
11.1.3 路由算法和绑定规则 219
+ \; S; w1 M* }11.1.4 投递消息 221
1 m/ }% y( V7 `11.2 内存使用率和进程限制 2232 i- }' E1 D! A" B5 W
11.2.1 内存使用率 223
W2 Y' Y, o5 I) f7 C' ^6 }0 T11.2.2 Erlang 进程计数 226
8 N+ B h# E3 n# t. @11.3 SSL连接 ..227
* j1 R$ H/ K) Q( o11.3.1 SSL 证书.2283 S! C: p3 h. G8 \7 R- K
11.3.2 设置证书颁发机构 ..229
" `% x9 F8 u' [* R5 A T7 \11.3.3 生成根证书 233
# X& O5 [% g. P4 c, R' S11.3.4 生成服务器端证书 234
: c/ W% Z* m: ]! Y/ b11.3.5 生成客户端证书 235$ O V/ |/ |* t/ c" w* }9 y" V0 G
11.3.6 启用RabbitMQ 的SSL 监听器 236& ?2 m' ~+ j! m
11.3.7 测试你的RabbitMQ SSL 设置 2377 P* o, h: a5 Z2 n/ s6 x
11.4 总结 2392 h" n6 |5 V# a' }$ q
第12章 聪明的Rabbit:扩展RabbitMQ2411 ~/ W% c {# p- K s
12.1 RabbitMQ插件 242
' C" y$ L" [! K3 i12.1.1 你可以用插件做什么 242
. m7 I3 \, s8 r$ I12.1.2 在哪里可以找到插件 244
* T S9 s5 J F5 H12.1.3 安装插件 244
7 H! c$ J+ R, r7 b. s# w: P5 Q: c12.1.4 移除插件 245
' u$ L$ w0 C5 g! A12.2 制作你自己的插件 247
6 ]: v; R+ v% s2 \12.2.1 获取RabbitMQ Public Umbrella 2485 c8 P/ R0 y/ G% |) h# a
12.2.2 设置文件夹结构 249# ^+ V' @" m( ?- F% f
12.2.3 包含插件构建系统 2501 f: h9 W) t1 B7 S
12.2.4 创建Erlang 应用文件 250* R1 H* M! A; `: j5 H0 U( }4 i
12.3 创建自定义交换器模块 252- s: G4 {3 g8 Z; K, H% H( G
12.3.1 将交换器注册到RabbitMQ 2548 ?& i6 ]2 Y6 z0 p3 R9 O
12.3.2 实现交换器behaviour 2575 i2 I7 e$ D3 }8 ]8 U0 V
12.3.3 编译自定义交换器 264/ g, I: l6 _ u0 P* o; b5 O' H0 K# b# a, ^
12.3.4 测试你的插件 267
3 s7 ?6 t, ^2 s6 @0 P7 Y) N12.4 总结 271# H# R8 ^( I2 U5 O8 w8 y
附录A 在Java和.NET上使用Rabbit 273
( t. K8 B: k5 Y% f附录B 在线资源302
) k$ ~: W! ?2 N& |附录C 在Windows上安装RabbitMQ 307$ o" r* B. W3 r( f( W6 x0 X5 Y
4 z9 j, k3 E& a3 E
4 a2 f; s$ C/ z: b) u# @9 s0 V百度网盘下载地址链接(百度云)检索下载地址:
" w# W9 h, S3 W$ k. u/ [4 C* f: {7 Q. N O, p
4 d" D# x4 l8 E: [$ s1 ]; Y& `5 f
, }! a" d$ G# o" u: U B, N; T' m$ I) B
( G* @/ |+ w9 [ @$ e) D$ {7 N% d
|
|