Skip to content

Latest commit

 

History

History
83 lines (65 loc) · 3.03 KB

1.16.md

File metadata and controls

83 lines (65 loc) · 3.03 KB

1.16 配置


#####################################
# 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"
  }
}