#####################################
# Akka Stream Reference Config File #
#####################################
akka {
stream {
# 默认的`Flow`实现者的配置
materializer {
# 流元素的初始化缓存大小
initial-input-buffer-size = 4
# 流元素中使用的缓存最大值
max-input-buffer-size = 16
# 完整描述的配置文件路径, 该配置包含`Dispatcher`的配置
# 这个`Dispatcher`被`FlowMaterialiser`用于创建`Actor`
# 当该值设为空时, 将会使用`default-dispatcher`
dispatcher = ""
# 在不活跃时间超过给定的终止时间后, 把泄露的`publisher`和`subscriber`都清除
subscription-timeout {
# 当订阅超时时在`过时`的`publisher`上使用以下一种策略
# cancel - 取消它 (通过 `onError` 或者 对`publisher`订阅时立马调用`cancel()`
# warn - 把过时的元素以一个警告语句记录到日志(然后把指向这个元素的引用丢弃)
# noop - 什么都不做 (不是推荐模式)
mode = cancel
# 超过该时间,一个`subscriber` / `publisher`被视为过时然后适用于取消
# (参看 `akka.stream.subscription-timeout.mode`)
timeout = 5s
}
# 在`DEBUG`级别日志启用一个额外的故障诊断日志记录
debug-logging = off
# 当下游请求数量为超大量时一次最大输出的元素数量
output-burst-limit = 1000
# 为所有的`Graph`运行时启用自动融合功能. 对于一些短暂的流这可能导致一些初始化运行开销,
# 但是绝大多是时间里融合是十分需要的, 因为它减少了`Actor`所需要创造的数量
auto-fusing = on
debug {
# 启用`Fuzzing`模式 可以增加产生竞争的几率, 它通过重新排列事件和使得
# 某些操作比平常情况更加并发.
# 这个配置仅仅为了测试目的, **千万不要**在一个生产环境内使用它!
# 为了得到一个最好的结果, 试着结合设定相应`dispatcher`的`throughput`为1
fuzzing-mode = off
}
}
# 完整描述配置的路径, 包含了`FlowMaterialiser`用来创建IO操作的`Actor`
# 相应的`dispatcher`的配置, 这些操作包括 `FileSource`, `FileSink`或是其他
blocking-io-dispatcher = "akka.stream.default-blocking-io-dispatcher"
default-blocking-io-dispatcher {
type = "Dispatcher"
executor = "thread-pool-executor"
throughput = 1
thread-pool-executor {
core-pool-size-min = 2
core-pool-size-factor = 2.0
core-pool-size-max = 16
}
}
}
# 配置在这里的参数会重载`ssl-configuration`(在`akka-stream`和`akka-http`中使用到的, 即 当服务于`https`链接时)
ssl-config {
# 由于在这个发布版中依然支持JDK6
# TODO 一旦JDK 8 被支持时把该值改为`TLSv1.2`(或者整个移除, 留给`ssl-config`来选择)
protocol = "TLSv1"
}
}