|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《RabbitMQ实战:高效部署分布式消息队列》7 J9 {( S$ c/ T* z7 h5 s' [
java电子书推荐理由:如何使用RabbitMQ消息通信服务器,构建和管理用不同语言编写的可伸缩应用。这很容易上手。你将学习消息队列的工作原理以及RabbitMQ是如何适用的。然后,你将通过许多案例来探索实践当中的可扩展性和互操作性问题。5 ~1 [: f: U( k/ w
学习要点:. Y# T$ D7 R. x/ }( v9 ]/ k
1、学习基本消息通信设计模式* N a1 t, y) H. B" [$ s" X
2、使用模式来满足按需扩展% e# c! T) g7 A+ D9 t; e4 E6 U- F
3、整合PHP编写的前端和用任何语言编写的后端# @0 P$ f7 X: q* K
4、在30分钟内实现发布/订阅的告警服务# `/ Q5 A! s" Z" [( B I6 `
5 、配置RabbitMQ内建集群
9 C' Q3 S# U9 n3 s) \+ F6、 监控、管理、扩展并调试RabbitMQ/ B6 Q7 E+ s; |
/ K; N# x0 x+ y1 ^$ q8 I5 C作者:(美)维德拉(Videla ,A.), (美)威廉姆斯(Williams,J.J.W.) 著,汪佳南 译: y" t3 I: j" K9 J. A8 l" r$ K% O# V
出版社:电子工业出版社" s) r5 [% c' \5 ~/ e
出版时间:2015-10-013 a# n% \: |& M* P
3 ?2 a- R( ?) U/ o4 S4 F. ~7 W, [! [2 n, \8 w y" C
' I/ _2 W5 j7 D5 d9 F$ ~
7 F2 K) y! u* R( N4 C4 [; p$ {4 e3 C) o
java电子书目录:
. R4 B0 k9 O( r% ?
% x* @- T+ L( \9 H# ~1 \) e) P9 Z- q5 L* X' k
第1章 天降奇兵1: u; m; q0 f; _2 i& A' M2 c
1.1 住在别人的地下城堡 3
8 ^( | |) d! P3 A$ \7 Z2 M. q" n1.2 救世主AMQP 5
, i+ n9 X" ~! m$ L+ z1.3 RabbitMQ简史 5
& k9 U" w' } F# p: u4 I# k1.4 百里挑一 8+ g6 x* n8 }0 ^; {9 G/ |
1.5 在UNIX系统上安装RabbitMQ 8
/ {6 o& q7 L3 h1.5.1 为什么环境很重要——生活在Erlang 的世界里 9
5 J9 H6 t0 w+ R, c1.5.2 获取安装包 9' i# ~& X# g# X. I( M. v
1.5.3 设置文件夹结构 9
2 e0 g U' H4 ?0 X6 `4 O. J1.5.4 首次运行Rabbit 10+ x8 v. f* {; ?
1.6 总结 12
e& a- y6 z4 }: ` S) I: p* N5 z第2章 理解消息通信13
( w+ C& T5 i+ v- I& f% K* h2.1 消费者和生产者(这可不是经济学课程哦) 14! s7 \6 j2 ^' Z
2.2 从底部开始构造:队列 17- R5 F0 P( i2 x
2.3 联合起来:交换器和绑定 22
0 |9 ]) X0 |" D8 F9 r2.4 多租户模式:虚拟主机和隔离 27* l: ~" ~& O( L' Z+ t; K5 a0 O3 ?
2.5 我的消息去哪儿了呢?持久化和你的策略 28
$ }$ y5 q" ~+ q% Y. ]2.6 把所有内容结合起来:一条消息的一生 32
/ t! v7 p- e# e# C; ?2.7 使用发送方确认模式来确认投递 37
' f' F9 u0 @1 g( k# t2.8 总结 40
] W- H/ Z" g第3章 运行和管理Rabbit 42) Y7 ~. [8 y7 o' N8 s. v
3.1 服务器管理 43
- s) _1 t4 V) W( a; Z# p7 y3.1.1 启动节点 43
6 r0 e- v! o$ J) y5 `3.1.2 停止节点 45
K* W$ s! h6 o2 O @+ O( j3.1.3 关闭和重启应用程序:有何差别 463 z+ Z9 [6 k% z& Z) j5 K+ O7 V# y0 ^
3.1.4 Rabbit 配置文件 46
* G& A4 y0 M" K3.2 请求许可 48
1 Y$ \/ _+ h% e- O, ^$ x3.2.1 管理用户 49' {. f, {) A" [; \
3.2.2 Rabbit 的权限系统 50
- @3 k& ?. p$ i& p v3.3 检查 54
2 q( K% s0 ~, g8 ~) W7 L/ c" |$ j3.3.1 查看数据统计 54* ]6 m1 g/ n1 r9 z" I% m8 |. }
3.3.2 理解RabbitMQ 日志 59' e; U/ V. R& l( D: O
3.4 修复Rabbit:疑难解答 63; S8 f9 }, |' ~: Q8 B, g
由badrpc、nodedown 和其他Erlang 引起的问题 63) i6 B. o, Y8 K+ w* g( y! z2 C
3.5 总结 68
- b- |/ q% Z9 ~/ V0 P4 Y第4章 解决Rabbit相关问题:编码与模式69, P. P# X' w* g3 ]7 u# y
4.1 解耦风雨路:谁将我们推向消息通信 70" }7 C1 }; A$ y3 [: _
4.1.1 异步状态思维(分离请求和动作) 701 H% h; z! p) X( x' K' C
4.1.2 提供扩展性:没有负载均衡器的世界 73
# H H% V6 \) t: `( |8 e" O3 w7 m4.1.3 零成本API :语言不应成为枷锁 73
- s. Q; A+ k2 @% ?4.2 发后即忘模型 74
5 K# ^4 {1 g4 h; x4 U- ~4.2.1 发送告警 75) l- P, v& C: J
4.2.2 并行处理 841 V, `3 R' ~( l/ P5 q* \
4.3 别忘了:用RabbitMQ实现RPC并等待响应 92" j+ F- O6 o- X: U. Y
4.3.1 私有队列和发送确认 93: j O% G- Q4 S$ z; c" D6 Q
4.3.2 使用reply_to 来实现简单的JSON RPC 93, P* |: G6 ]2 O, m% Q% a
4.4 总结 985 i/ {/ R N k) Z; s+ y1 X4 `* V
第5章 集群并处理失败99
) ?2 u- ` E2 V' m3 S) E( ^ Y5.1 开足马力:RabbitMQ集群 100
: m8 G" Q# D4 d. y+ I& g0 U' B5.2 集群架构 101$ _1 l1 p [ ?/ C9 w3 P( Q% f3 q
5.2.1 集群中的队列 101
7 F T0 O- q7 F+ ?% N. p5.2.2 分布交换器 103- c3 b* _4 y' {* Y. F4 s
5.2.3 是内存节点还是磁盘节点 104; ?0 Y! r+ a! \5 L' c/ d
5.3 在你的笔记本电脑上设置集群 106
$ ~5 F: H( K# z! d, ^5.4 将节点分布到更多的机器上 110
! s$ ^" _4 r" f/ n. K/ b5.5 升级集群节点 114+ ?* R" {. C* h% J5 O1 X
5.6 镜像队列和保留消息 115: @+ w7 N$ H: |* [+ l; E
5.6.1 声明并使用镜像队列 1150 y: W, B) Q( L2 J, J0 h: [
5.6.2 镜像队列工作原理 118
6 g2 }2 b7 B+ ^* d; H5.7 总结 120+ W/ ~0 I7 w1 I6 C+ S7 k, z( ^
第6章 从故障中恢复121
/ c; y' \$ F% U# ^* v0 N y6.1 为Rabbit做负载均衡 122
# i8 P& d/ y# m/ N; Q, m6.1.1 安装HAProxy 124
7 f: h# {' q( Y- K6.1.2 配置HAProxy 125
) g) G/ L5 C6 F/ r6.2 连接丢失和故障转移 127: L O% D/ I/ M6 B6 ~
6.3 总结 134
% g- |; a3 {6 d- X3 L第7章 warren和Shovel:故障转移和复制 135, M+ j- G* Z& I/ M8 J! x
7.1 warren:另一种集群方式 136 p/ p& N( Q& h4 ?
7.2 设定负载均衡器——基于主/从的集群 1385 d2 b8 ?5 d. n; y+ G& e$ W. m
7.3 远距离通信和复制 142
" L, `) s4 S, B! @2 W7.3.1 给Rabbit 装备Shovel :Shovel 插件介绍 142% S6 O' I" b" p# w$ `
7.3.2 安装Shovel 1450 o6 P/ p' D7 {+ u; V1 _
7.3.3 配置并运行Shovel 146; o0 e0 Y( Q9 T- Q4 J Z. Q2 `
7.4 总结 152
# S9 _3 n! k. c* c7 ~$ V: `& L+ ]第8章 从Web端管理RabbitMQ 154
- a% s9 ~9 b Z d8.1 超越rabbitmqctl:RabbitMQ Management插件 1555 h8 _& b; K2 n+ a
8.1.1 为何需要Management 插件 155/ V: x" V% |% Y- n( @9 K
8.1.2 Management 插件功能 155
( F) @0 L, E4 [- o0 S8.1.3 启用Management 插件 156
1 l7 k6 Q2 c/ q. G# F9 {4 _# f, a8.2 从Web控制台来管理RabbitMQ 1580 p0 b' z) g6 B+ C7 O& @
8.2.1 监控Erlang VM 158; Z: Z. F: s9 B- x
8.2.2 从JSON 文件导入配置 159
/ m& T: J( P! ?0 V$ O8.3 从Web控制台管理用户 160
h2 D4 _! x: r( G# e$ ^8.3.1 创建用户 161
4 ~$ s2 B4 U* i* o: \; @8.3.2 管理用户的权限 162
# v$ z4 A$ E6 C3 |0 G7 l8.4 从Web控制台管理交换器和队列 163
4 Y9 a% W" E* J' E8.4.1 列出队列信息 165* s3 f1 o! O+ Q$ e3 i
8.4.2 创建队列 166
- i, n9 e# Y3 B) {! u8.5 回到命令行 168
( i- J( j, `8 R" B, \2 ^# j% W8.5.1 为什么需要另一个CLI 168: I }$ l& X9 I5 T; j) r! d! T
8.5.2 CLI 管理:一种更简单的方式 170
) o- I5 w/ Y4 s, c( i" F# J8.5.3 安装rabbitmqadmin 脚本 170
$ {# ~4 G" T2 x2 f: x0 |# V8.5.4 清空队列、创建交换器等 171
% F$ r) C1 L% P% L- W8.6 总结 172
' n6 V( S4 @3 U- e$ _% O) U U第9章 使用REST API控制Rabbit 173
8 G) O6 X# o* |0 F! h9.1 能用RabbitMQ REST API做什么 175
. r8 r/ j7 T! B$ i3 @9.2 对客户端授权访问 177
: b- k1 G- v1 |4 G3 S9 d9.3 访问数据统计 178
0 o2 } p: m1 z" H: B% }% ^, N3 r) y9.4 自动化vhost和用户配置 181
& c/ S+ Y1 k( G4 `3 q/ d9.5 总结 .1861 H; D: Z& a$ ]0 o! t
第10章 监控187: u% H/ p1 k+ R
10.1 监控RabbitMQ:密切关注你的warren 188! y1 ?" T8 @! |6 z4 r: F5 f. p! v
10.1.1 为Nagios 编写健康检测 188
. ~4 h+ u# C8 T6 M* s! E; y. h10.1.2 使用AMQP 模拟检测来确认RabbitMQ 是否运行 190
/ B1 \, [, z: o2 D: z$ x) E10.1.3 使用REST API 来检测 193$ P7 V9 J# S @7 ?7 E
10.1.4 监控配置文件修改 196
! ]6 A5 ?8 N1 H) K10.1.5 监控集群状态 201- @, a' w- j% m' l: u. Q1 v0 O* Z
10.2 确保消费者正常工作 206
+ H% ?; h f6 H3 K3 I0 ~" N- ?$ a* f10.2.1 通过AMQP 监控队列等级 208' \; w+ u. f1 x7 m6 b! S
10.2.2 使用REST API 来监控队列级别 212
7 v6 H1 b4 B0 v$ R, R/ x! I10.2.3 建立队列的消息计数基准经验法则 215: s* h( j' g9 u/ J
10.3 总结216; L& m2 ?: a- M/ [7 X
第11章 提升性能,保障安全217' J; p/ ~: [1 X, q% _- J8 E
11.1 对速度的需求 218
6 I `+ ^/ X" D' s+ L11.1.1 消息持久化 218
6 e6 _# ~2 ~3 ^, ~; Y0 W1 u11.1.2 消息确认 219
+ q A4 [' h( G- Q11.1.3 路由算法和绑定规则 219- D) D- w" B% W" [1 S9 E
11.1.4 投递消息 221
& {* a U+ `& U+ S! d11.2 内存使用率和进程限制 223
4 Y" {( O+ q% P7 v1 X11.2.1 内存使用率 223! S9 H2 W% x: f
11.2.2 Erlang 进程计数 226
& J( x8 y/ |( r" J) T8 X11.3 SSL连接 ..227
% o0 N, F5 q d. a2 B; U11.3.1 SSL 证书.228
# O. |; F' U' F5 z% B! n- f2 {5 y11.3.2 设置证书颁发机构 ..2293 n4 s C# ?- ?
11.3.3 生成根证书 233( T/ H7 f/ w$ E7 R E7 y6 f
11.3.4 生成服务器端证书 234* l3 v; ^; v* ]
11.3.5 生成客户端证书 235
. I1 N0 z8 s& q% g" b5 K1 a7 {11.3.6 启用RabbitMQ 的SSL 监听器 236
! Q, n3 d G/ `. `* E11.3.7 测试你的RabbitMQ SSL 设置 2374 i6 T4 ^3 F# d! _0 L# b
11.4 总结 239
2 I8 I! V! D5 O4 C$ M第12章 聪明的Rabbit:扩展RabbitMQ241
# P% A, {, p4 E& O1 b12.1 RabbitMQ插件 242
# p7 ?! I5 ?# [) t; o( \12.1.1 你可以用插件做什么 2428 m" T8 b R% r K: n
12.1.2 在哪里可以找到插件 244
- a# `% a8 g* a6 a7 o* \8 m9 o- h12.1.3 安装插件 244
3 s9 Z. X" f/ w9 Q9 T/ ~" S9 U7 u12.1.4 移除插件 245
" z. w$ l; M4 r/ X j% [5 q12.2 制作你自己的插件 2471 V. `( K8 h6 Y+ K; _
12.2.1 获取RabbitMQ Public Umbrella 248. g# Z1 F6 ?4 D+ g4 i* U
12.2.2 设置文件夹结构 2491 P* X' I+ Z' q" Y( I
12.2.3 包含插件构建系统 250# h8 A) z; e8 O% b# r
12.2.4 创建Erlang 应用文件 2505 z6 n- z; y, B1 ]
12.3 创建自定义交换器模块 252
$ H9 f( W& \: o$ Z* X% g* b( D. Z12.3.1 将交换器注册到RabbitMQ 254
) ]& W& I1 Y" R5 K% B, s12.3.2 实现交换器behaviour 257% k' A# e, N' z- _6 p
12.3.3 编译自定义交换器 264
& a! s" n- X" X) x" @12.3.4 测试你的插件 267: u; m2 a2 f+ t) u) C R& w
12.4 总结 2712 {2 G, Z5 N% R8 V+ Y0 h
附录A 在Java和.NET上使用Rabbit 273. O0 n+ f# u) K( k+ A( ?
附录B 在线资源302# _3 \# \- M$ P5 e. {+ t9 d4 h
附录C 在Windows上安装RabbitMQ 307
( I s0 ]+ G, U' q5 {( T+ M0 T- Q' d: B+ y9 z; N. R
' z6 t% j. o- g, V- I# D* G8 C! u; n
百度网盘下载地址链接(百度云)检索下载地址:
7 I) M" z6 Q0 e, L2 R
8 [' r5 |4 z( R6 q
1 }! e* W. F; U9 i9 v
; x6 z. [0 P, J) T b" m/ f
7 h F# s+ }: L: Z7 l3 O. U! I' U1 C: ^& a; C
6 X, S# C0 Z$ R& C. e |
|