目录
序I
译者序II
致谢III
关于本书IV
1章 Akka简介1
1.1 什么是Akka?3
1.2 Actor简介4
1.3 两种扩展方法:建立我们的实例4
1.4 传统扩展5
1.4.1 传统扩展和持久性:一切移入数据库6
1.4.2 传统扩展和交互应用:轮询8
1.4.3 传统扩展和交互应用:Web服务9
1.5 用Akka进行扩展10
1.5.1 用Akka扩展和持久化:发送和接收消息11
1.5.2 用Akka扩展和交互应用:消息推送13
1.5.3 用Akka扩展和容错:异步解耦14
1.5.4 Akka方式:发送和接收消息15
1.6 Actor:向上和向外扩展的编程模型16
1.6.1 异步模型16
1.6.2 Actor操作17
1.7 Akka Actor20
1.7.1 ActorSystem20
1.7.2 ActorRef、邮箱和Actor21
1.7.3 分发器21
1.7.4 Actor和网络24
1.8 总结24
2章 搭建和运行25
2.1 克隆、构建和测试接口25
2.1.1 用sbt进行构建26
2.1.2快进到GoTicks.com REST服务器28
2.2 探索应用中的app32
2.2.1 app结构32
2.2.2 处理销售的Actor:TicketSeller39
2.2.3 BoxOffice Actor40
2.2.4 RestApi43
2.3 部署到云上46
2.3.1 在Heroku上创建app46
2.3.2 在Heroku上部署并运行48
2.4 总结49
3章 Actor测试驱动开发50
3.1 测试Actor50
3.2 单向消息52
3.2.1 SilentActor实例52
3.2.2 SendingActor实例57
3.2.3 SideEffectingActor实例63
3.3 双向消息66
3.4 总结68
4章 容错69
4.1 容错是什么(不是什么)?69
4.1.1 普通对象与异常70
4.1.2 Let it crash73
4.2 Actor生命周期76
4.2.1 启动事件77
4.2.2 停止事件78
4.2.3 重启事件78
4.2.4 生命周期综合80
4.2.5 生命周期监控82
4.3 监视83
4.3.1 监视器层次结构83
4.3.2 预定义策略85
4.3.3 自定义策略87
4.4 总结94
5章 Futures95
5.1 Future的应用实例95
5.2 Future无阻塞99
5.3 Future错误处理106
5.4 Future组合111
5.5 Future组合Actor122
5.6 总结123
6章 一个分布式Akka app125
6.1 向外扩展125
6.1.1 通用网络术语125
6.1.2 采用分布式编程模型的原因126
6.2 远程扩展127
6.2.1 把GoTicks.com app改造成分布式应用128
6.2.2 远程REPL活动129
6.2.3 远程查找135
6.2.4 远程部署143
6.2.5 多JVM测试149
6.3 总结156
7 章 配置、日志和部署158
7.1 配置158
7.1.1 尝试Akka配置158
7.1.2 使用默认值162
7.1.3 Akka配置165
7.1.4 多系统166
7.2 日志168
7.2.1 Akka中的日志记录168
7.2.2 使用日志170
7.2.3 Akka的日志控制171
7.3 部署基于Actor的应用173
7.4 总结178
8章 Actor的结构模式179
8.1 管道和过滤器179
8.1.1 企业集成模式:管道和过滤器179
8.1.2 Akka中的管道和过滤器180
8.2 企业集成模式:分发-收集模式185
8.2.1 适用性185
8.2.2 Akka处理并行任务187
8.2.3 使用接收者列表实现分发组件188
8.2.4使用聚合器模式实现收集组件189
8.2.5 组合组件实现分发-收集模式198
8.3 企业集成模式:路由表模式199
8.4 总结205
9章 路由消息207
9.1 企业集成路由模式207
9.2 使用Akka Router实现负载平衡208
9.2.1 Akka Router池211
9.2.2 Akka Router群组217
9.2.3 ConsistentHashing Router225
9.3 用Actor实现路由模式229
9.3.1 基于内容的路由229
9.3.2 基于状态的路由230
9.3.3 Router的实现233
9.4 总结234
10章 消息通道235
10.1 通道类型235
10.1.1 点对点通道235
10.1.2 发布-订阅通道236
10.2 特殊通道245
10.2.1 死信245
10.2.2 保证投递248
10.3 总结254
11章 有限状态机和代理256
11.1 使用有限状态机256
11.1.1 有限状态机简介256
11.1.2 创建FSM模型257
11.2 FSM模型的实现258
11.2.1 实现转换259
11.2.2 实现入口动作264
11.2.3 FSM定时器270
11.2.4 FSM的终止273
11.3 使用代理实现共享状态274
11.3.1 使用代理简单地共享状态274
11.3.2 等待状态更新276
11.4 总结277
12章 系统集成278
12.1 消息终端278
12.1.1 归一化279
12.1.2 规范数据模型280
12.2 使用Apache Camel实现终端282
12.2.1 创建从外部系统接收消息的消费者终端283
12.2.2 实现生产者向外部系统发送消息291
12.3 实现HTTP接口297
12.3.1 HTTP实例298
12.3.2 用Akka-https实现REST终端300
12.4 总结307
13章 流309
13.1 基本流处理309
13.1.1 使用源和接收器复制文件313
13.1.2 实体化可运行图316
13.1.3 用Flow处理事件321
13.1.4 处理流中的错误324
13.1.5 用BidiFlow创建协议326
13.2 HTTP流330
13.2.1接收HTTP流330
13.2.2 HTTP响应流333
13.2.3 内容类型和协调的自定义编组与解组334
13.3 用Graph DSL进行扇入和扇出340
13.3.1 广播流340
13.3.2 合并流343
13.4 协调生产者和消费者347
13.4.1 使用缓冲区347
13.5 图的速率隔离350
13.5.1 对较慢的消费者,对事件进行汇总351
13.5.2 快速消费者的扩展度量351
13.6 总结352
14章 集群353
14.1 为什么使用集群?353
14.2 集群成员关系355
14.2.1 加入集群356
14.2.2 离开集群364
14.3 集群作业处理369
14.3.1 启动集群
· · · · · · (
收起)