用途:该技能面向 Scala 的 Akka Streams 与 Pekko Streams,用于数据流与响应式编程模式、测试流组件,以及理解相关核心概念。
主要能力与建议:
- 使用前先判断是否真的需要流:优先使用普通函数,即使是 I/O 场景也如此;不要用流建模普通数据转换,也不要用流做通用 I/O。
- 将 Source、Flow、Sink 设计为独立、可测试的单元,保持拓扑简单,把复杂图拆成命名组件。
- 错误处理必须显式:使用 recover、recoverWithRetries 或监督策略;默认行为会拆掉整个流。
- 测试使用 akka-stream-testkit 的 TestSource、TestSink、TestProbe;用 TestSource.probe 与 TestSink.probe 精细控制元素流动,用 request() 与 expectNoMessage() 显式测试背压,用 expectError() 或监督策略测试错误场景。
- 先测试各组件,再组合最终图并物化,物化时显式处理错误。
- 偏好不可变;流图在物化前只是蓝图。
Pekko Streams:它是 Akka Streams 的分支,API 相同,包名从 akka.* 改为 org.apache.pekko.*;所有指导同样适用,只需调整导入,模式与测试方法保持一致。
参考文件:references/akka-streams.md 提供核心概念与模式;references/best-practices.md 提供何时不应使用流的关键指导;references/testing.md 提供完整测试示例。
限制:资料未提供具体版本、依赖坐标、安装命令、收费或平台信息。