|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《RabbitMQ实战:高效部署分布式消息队列》
+ V B' n8 e; ]3 @" z& v% y! sjava电子书推荐理由:如何使用RabbitMQ消息通信服务器,构建和管理用不同语言编写的可伸缩应用。这很容易上手。你将学习消息队列的工作原理以及RabbitMQ是如何适用的。然后,你将通过许多案例来探索实践当中的可扩展性和互操作性问题。
3 \7 i4 C2 { }6 z6 t. t4 A" r# b学习要点:
% t Q2 ]2 I: b5 q: B# b1、学习基本消息通信设计模式
B; x# u% ^: t6 }" u' J2、使用模式来满足按需扩展6 _1 T( v7 a+ x- \8 m
3、整合PHP编写的前端和用任何语言编写的后端
: b; a8 G- k5 o$ g+ E2 ~+ Y: |8 ~ i4、在30分钟内实现发布/订阅的告警服务
5 a0 t0 [- {$ Q9 H2 A5 、配置RabbitMQ内建集群
0 Q% b) p2 c& W. W, ?6、 监控、管理、扩展并调试RabbitMQ* }4 N4 l1 e9 q/ B8 k
) K) [5 n2 Z6 U" a2 ?2 R- x作者:(美)维德拉(Videla ,A.), (美)威廉姆斯(Williams,J.J.W.) 著,汪佳南 译' N' a' Z+ F3 }0 ?; C( _- Z
出版社:电子工业出版社
+ s% V* W' `4 A出版时间:2015-10-01
' @' s3 |9 k; m$ D1 J# b" \' Q
! Q6 D+ m8 `* X( c' A ~9 k& J$ f7 T% l9 r: v
) u& h) R/ G( a7 f' M% X
6 J. S- S; U/ {7 E1 y
! g( b4 o$ r! i& ~java电子书目录:
- F3 X! D8 j6 H9 Y5 z- S! Y
( u, W3 f* s2 N6 ^& i4 w! R
! u- c* f1 Y: L8 ~2 r4 E; E第1章 天降奇兵1( y" G, n7 d5 K' ?4 w/ {
1.1 住在别人的地下城堡 3
) d" X+ t6 m! M( q1.2 救世主AMQP 5/ T6 M" @4 y4 w/ W0 {
1.3 RabbitMQ简史 5
1 D) }5 d. W$ [. o1.4 百里挑一 8
2 I2 E1 D5 V. x1.5 在UNIX系统上安装RabbitMQ 8
- A% ~# z b) c; T2 j1.5.1 为什么环境很重要——生活在Erlang 的世界里 9
/ \- w& u/ _5 M1.5.2 获取安装包 9/ m8 t6 p$ Y+ Q( E( P
1.5.3 设置文件夹结构 90 N2 f2 J! ?1 s; U- i
1.5.4 首次运行Rabbit 10$ w6 B4 X8 A! i# ~' i1 {
1.6 总结 12
& f' x: F, O1 F7 S" j) e( a第2章 理解消息通信13+ Z+ m8 Y4 ~; [
2.1 消费者和生产者(这可不是经济学课程哦) 14+ N+ |3 o+ O3 O6 C( q4 G
2.2 从底部开始构造:队列 17
7 o8 h* v0 Y# S! M: b1 f4 W8 m2.3 联合起来:交换器和绑定 22) N- g& Q6 n @6 t0 A/ T$ H7 S
2.4 多租户模式:虚拟主机和隔离 27
: a, |# P/ M7 t% N2.5 我的消息去哪儿了呢?持久化和你的策略 28( s" j, I! D' q$ l- H1 Z c2 ^
2.6 把所有内容结合起来:一条消息的一生 32
& |4 @$ T; ^& Y& F2 r( z! v2 D2.7 使用发送方确认模式来确认投递 37
2 m' g, ~+ Y: m+ V, s; ~2.8 总结 40% P3 f8 k' H' b5 K
第3章 运行和管理Rabbit 42
+ b' \# W3 |" v6 B- O/ C6 L+ ~3.1 服务器管理 43
# W& g/ b' z0 Q) [1 G; t5 C. f2 G0 W% `3.1.1 启动节点 43+ ?1 N# p, p( k7 [; h+ H
3.1.2 停止节点 45$ B) [2 k5 W3 {/ Q" m1 v# y8 B* ?
3.1.3 关闭和重启应用程序:有何差别 46
; l0 @& ^: `) t& z2 @3.1.4 Rabbit 配置文件 463 f) [8 `% q" E- P/ C5 ?4 {
3.2 请求许可 48
# [. B- i# o; F3 u3.2.1 管理用户 494 q4 ?3 ~" W# t3 Z' S
3.2.2 Rabbit 的权限系统 50# e5 m5 i- v; C, s+ Z
3.3 检查 54
; y8 u% z( e) S& Z0 U7 d- z3 J$ R3.3.1 查看数据统计 54
+ k4 {, T0 Z8 ~6 R9 C3.3.2 理解RabbitMQ 日志 59
; w8 n- G4 `) b+ @8 m. {3.4 修复Rabbit:疑难解答 63+ r2 d6 ?0 s9 |6 t$ d
由badrpc、nodedown 和其他Erlang 引起的问题 63: d* V4 t) ?* y$ a$ `/ R; l3 v
3.5 总结 68
. N" L. d, D% i# M) o1 [& M第4章 解决Rabbit相关问题:编码与模式69
2 ?% g; u' O1 X, g' q. m4.1 解耦风雨路:谁将我们推向消息通信 70* \& Q6 Q5 ]$ ~" s6 c0 D
4.1.1 异步状态思维(分离请求和动作) 70
! C/ k+ c) ~, `0 y# s% h4.1.2 提供扩展性:没有负载均衡器的世界 73) B9 W, Q" e4 ~: b: D7 |( {
4.1.3 零成本API :语言不应成为枷锁 73' ^/ g* m* e% S, C
4.2 发后即忘模型 74
5 ^! ~ V- G* y! u) ~4.2.1 发送告警 75' f, Q/ P; b4 v
4.2.2 并行处理 84" k* z5 o- o! P! `$ f8 z8 E- P
4.3 别忘了:用RabbitMQ实现RPC并等待响应 92
6 \; ]& r$ }1 M! B4.3.1 私有队列和发送确认 93/ T% U- b2 X! V" x+ `3 C
4.3.2 使用reply_to 来实现简单的JSON RPC 93
/ Q* q$ Z" ~; v. J9 _5 h4.4 总结 98
- Z/ J1 A5 p. _. |# i; g* p" D第5章 集群并处理失败99+ Y; k2 \* R7 o0 M1 d2 }
5.1 开足马力:RabbitMQ集群 100
9 b: @2 Y# @ Y6 N& E( a5.2 集群架构 101
- g, ?2 f' ^* v+ d! O5.2.1 集群中的队列 101
3 }& p3 e- P; t0 Q5.2.2 分布交换器 103
7 |/ y% O. ]! H2 r) e1 b/ B4 l3 J1 }5.2.3 是内存节点还是磁盘节点 104
4 u% `! X* C0 K+ o1 X1 F K5.3 在你的笔记本电脑上设置集群 1068 y, x. q, Q/ L( f& @9 C& \( N
5.4 将节点分布到更多的机器上 110
% {0 L; F( b) z, ^0 f5.5 升级集群节点 114
( \( g- K3 |: A2 T9 [, p. E3 S5.6 镜像队列和保留消息 115
% }/ L2 M1 m q+ A' x1 O. j5.6.1 声明并使用镜像队列 115
" k, E# X K+ J9 T9 a/ G6 Q5.6.2 镜像队列工作原理 118
0 Z; z# {" o' S, {5.7 总结 1205 K; i& u& S$ f) s/ }
第6章 从故障中恢复121 q" t4 L" I, m6 c- K" R
6.1 为Rabbit做负载均衡 122
1 Q9 N) s6 ]' {# ], Z1 E6.1.1 安装HAProxy 124
- I/ ?& ]; j: |) f1 s6.1.2 配置HAProxy 1252 J8 B1 Y7 V ?% O
6.2 连接丢失和故障转移 127
: E2 _3 n4 _; p7 B n. @" Z6.3 总结 1345 M# H5 d v9 w( L
第7章 warren和Shovel:故障转移和复制 135
, F# k- [0 E' Y( K+ X, ~7.1 warren:另一种集群方式 1362 V: R( v S) f9 k: _
7.2 设定负载均衡器——基于主/从的集群 1381 D2 r3 d$ X( k3 V/ A
7.3 远距离通信和复制 142
5 ^+ E& I E/ k: V8 \7.3.1 给Rabbit 装备Shovel :Shovel 插件介绍 142/ j$ z; K" H, O' M; t
7.3.2 安装Shovel 1451 P: l, o: ?# y
7.3.3 配置并运行Shovel 146
" p; I' g& m6 Q8 D! k; r7.4 总结 152- q$ o4 n( L6 D: t% t. W6 \
第8章 从Web端管理RabbitMQ 154
, I% x5 ^1 f( T9 U2 g8 `8.1 超越rabbitmqctl:RabbitMQ Management插件 155
+ ^0 ]- o4 @# N$ x t" A# U j, p9 e8.1.1 为何需要Management 插件 155 p1 {# a) S0 u% z7 B4 k
8.1.2 Management 插件功能 155
8 A' d C$ x5 `- S8.1.3 启用Management 插件 156( t2 K9 H$ V' K0 X' ?4 A& q% V3 l
8.2 从Web控制台来管理RabbitMQ 158
6 R. a* v% a6 B; ~8.2.1 监控Erlang VM 158
9 B' I) f9 h Q* V8.2.2 从JSON 文件导入配置 159
. ]' p8 F/ J6 G; l9 b; ?/ C8.3 从Web控制台管理用户 160
. H R# L# ~; V8.3.1 创建用户 161
; p& S6 @1 w2 `2 s8.3.2 管理用户的权限 162
0 ~' D" N6 F( v1 B) I$ N8.4 从Web控制台管理交换器和队列 1633 t% r& b* c' V
8.4.1 列出队列信息 165
; s) d! E) N: h3 E ]$ ~" [8.4.2 创建队列 166) z4 C u7 _, y/ T G
8.5 回到命令行 1689 }8 u/ W3 {9 ^% P; n0 h3 }
8.5.1 为什么需要另一个CLI 1683 d& N7 P X6 O/ K, l! f0 a9 |
8.5.2 CLI 管理:一种更简单的方式 170& X8 r( y' G" X
8.5.3 安装rabbitmqadmin 脚本 170
8 r- [% j0 w# k O# l8.5.4 清空队列、创建交换器等 171" X, \* `4 E" ~- N8 @
8.6 总结 172
8 P; x* d& `6 r* T1 R5 D. Z4 B第9章 使用REST API控制Rabbit 173
. M2 x5 A) n. p# c1 L% p. A p9.1 能用RabbitMQ REST API做什么 175! W# L, h5 u/ w. V5 c& V+ i2 \4 O
9.2 对客户端授权访问 177+ W* L; @; |5 E% K5 K1 m& Y
9.3 访问数据统计 178
$ {9 l- G9 M/ I9.4 自动化vhost和用户配置 181
) u( r6 c: ^% n! h9.5 总结 .186
7 s$ C9 p! p& G; H" j第10章 监控1877 w, h6 Y1 n' v3 ] a% _2 T( a
10.1 监控RabbitMQ:密切关注你的warren 1886 h) i) j# y. o/ K4 l- c1 o" |
10.1.1 为Nagios 编写健康检测 188. u* e4 o. a, E3 B
10.1.2 使用AMQP 模拟检测来确认RabbitMQ 是否运行 190: _! L) @; s* {; X: E
10.1.3 使用REST API 来检测 193
& Z c5 Y- Y, X) o, p3 i" @1 z/ X1 P2 k10.1.4 监控配置文件修改 196; i3 R* n* L# d! U8 Y
10.1.5 监控集群状态 201
( N: N) |, O7 P; O$ W10.2 确保消费者正常工作 206
: Z& e; I5 F$ v5 ^0 V; T) ~7 g10.2.1 通过AMQP 监控队列等级 208
+ o' m) D; w q: U10.2.2 使用REST API 来监控队列级别 212
( d1 P4 I0 r: Y10.2.3 建立队列的消息计数基准经验法则 2151 ]% J& Y, u) k. _, `
10.3 总结216. \+ E! I6 q2 J2 Q ]
第11章 提升性能,保障安全2177 E7 t5 N! L3 f/ q0 |+ p
11.1 对速度的需求 218
4 o' _- `- b8 D2 s& Q11.1.1 消息持久化 218 b- N: v" S3 H4 A8 X6 C
11.1.2 消息确认 219
. }5 r! V" P6 ^) l- H# d! K11.1.3 路由算法和绑定规则 219: N& S/ B' {8 F! |: A5 d. S: I; @" ]! r* m
11.1.4 投递消息 221
' x( \$ l3 u3 i6 S3 q11.2 内存使用率和进程限制 223
9 F7 R: m9 Z& D" y3 T: }! A11.2.1 内存使用率 223
* `9 ?! ~1 s0 _* f+ c11.2.2 Erlang 进程计数 2260 q4 F' K' g/ T
11.3 SSL连接 ..227# f5 a8 S3 i* i! T; R8 X; r) X
11.3.1 SSL 证书.2284 }- ]" { g* B& b
11.3.2 设置证书颁发机构 ..229
: D+ T! f4 W" x! _7 R6 E7 J11.3.3 生成根证书 233& |) j# \. X- l/ d/ X# ^. a
11.3.4 生成服务器端证书 234
6 a. Q$ t% m q! P8 Q4 O11.3.5 生成客户端证书 235
$ @+ Z( ~) H- K! {+ u' }; I11.3.6 启用RabbitMQ 的SSL 监听器 236" x( v6 n! v# O
11.3.7 测试你的RabbitMQ SSL 设置 237+ \+ N, X/ @, H) d2 V7 |
11.4 总结 239/ h$ X# n X( c) E1 p+ J$ C
第12章 聪明的Rabbit:扩展RabbitMQ241: Y7 X/ G, q( W6 ?1 ?: S
12.1 RabbitMQ插件 242; {; y0 n3 }% l+ T1 V' N
12.1.1 你可以用插件做什么 242# K- y' G p% Z: x
12.1.2 在哪里可以找到插件 2446 u3 o' _3 a. o' Z& {2 l
12.1.3 安装插件 2444 ]( D8 [# X# B) c6 N+ q& e* @
12.1.4 移除插件 245 \" W9 |7 L+ n* _
12.2 制作你自己的插件 247- x0 g9 i7 W1 I
12.2.1 获取RabbitMQ Public Umbrella 248
p' d$ O0 g0 b% o+ W) b12.2.2 设置文件夹结构 2497 ?3 Y+ ]6 i4 I; o4 h+ x
12.2.3 包含插件构建系统 250
" f! U% r' O# O5 n# V0 Y4 n; J ^+ g12.2.4 创建Erlang 应用文件 250
% F. U$ ^" D% o% u7 h12.3 创建自定义交换器模块 252* Y; I& [2 a9 M7 N, b
12.3.1 将交换器注册到RabbitMQ 254
6 ~/ J+ a; t. c% \* h% m6 w12.3.2 实现交换器behaviour 257$ b: W+ @/ ^. h, R% [0 h
12.3.3 编译自定义交换器 264! r4 g6 ^( u" E( H" N1 g6 C
12.3.4 测试你的插件 267- s3 t, s# d+ k* q9 _# R; B
12.4 总结 271) G2 `7 c+ u) ~
附录A 在Java和.NET上使用Rabbit 273) I( X7 h n# {' K9 S9 ]- {
附录B 在线资源302
! i" }0 P( i0 p; G" `4 h2 {* @+ W附录C 在Windows上安装RabbitMQ 307
+ v: {6 `; a2 R$ _6 k0 v
9 r, t. a) a% ^3 n9 }
! ~0 s. F) T, B5 G* @0 x0 M" o百度网盘下载地址链接(百度云)检索下载地址:- M Q! r) D3 C* B# I
: H a9 B5 h( i
9 o' J+ w2 l6 I: t& v7 q; Y! n5 {" ?
* l4 j+ G2 N- k; @* l
" b. I4 d) p2 W! n& n
( p7 k: i/ x' E- H! ?' ?
|
|