以下列出的是定义在 reference.conf
中的squbs配置:
squbs {
#squbs创建的actor system的名称
actorsystem-name = "squbs"
# 优雅关闭的超时时间
# 在继承org.squbs.lifecycle.GracefulStopHelper特性的情况下,一个actor优雅关闭的默认超时时间
default-stop-timeout = 3s
# 一个额外的配置目录来扩展application.conf。文件夹的地址相对于squbs进程的工作文件夹。
external-config-dir = squbsconfig
# 一个额外的配置文件名列表,在 external-confi-dir中任何列表中的文件将会在Actor System初始化设置
# 加载的时候被加载。除此文件列表之外, "application.conf" 将会被隐式加载。
external-config-files = []
}
default-listener {
# 所有的squbs监听携带"squbs.listener"类型
type = squbs.listener
# 在 cube's route声明通过不同名称绑定监听时,为监听加入依赖。
# 只需要逗号分隔的名称就可以了,例如
# aliases = [ foo-listener, bar-listener ]
aliases = []
# 服务绑定特定的地址/接口。默认是0.0.0.0 为任何地址/接口
bind-address = "0.0.0.0"
# 是否为地址绑定使用全主机名称
full-address = false
# 服务绑定的特定端口,默认为8080
bind-port = 8080
# 监听是否使用HTTPS
secure = false
# HTTPS是否需要客户端授权。 secure关闭,这个配置不会读取。
need-client-auth = false
# 提供任何的个性化的SSLContext?设置"default"以为着系统默认。
ssl-context = default
}
blocking-dispatcher {
# Dispatcher是基于事件调度器的名称
type = Dispatcher
# 使用哪种类型的ExecutionService
executor = "thread-pool-executor"
thread-pool-executor {
# factor-based 限制的最小核心线程数
core-pool-size-min = 2
# 通过使用公式ceil(available processors * factor).,核心线程数factor用于确定核心线程数。
# 结果的大小在pool-size-min和core-pool-size-max之内
core-pool-size-factor = 3.0
#控制的最大factor-based线程大小
core-pool-size-max = 24
# factor-based 限制最小的最大线程数
# (如果使用有界线程队列)
max-pool-size-min = 2
# 最大线程数通过计算确定(如果使用有界线程队列): ceil(available processors * factor)
max-pool-size-factor = 3.0
# actor-based 限制的最大线程数(如果使用有界线程队列)
max-pool-size-max = 24
}
# Throughput 定义每个actor处理的最大消息量,在跳向下一个actor之前。
# 设置为1尽可能公平。
throughput = 2
}
阻塞调度器(Blocking Dispatcher)
squbs的reference.conf
声明了 blocking-dispatcher
用于阻塞 I/O调用。这是一个标准的Akka调度器配置。请查看dispatchers 获得更多细节。
监听(Listeners)
一个监听器绑定一个端口,这个端口的行为诸如安全,授权等。默认的监听由squbs的 reference.conf
提供。可以通过提供application.conf
或在扩展配置文件夹中的 application.conf
覆盖。关于squbs如何读取这些配置文件,可以查看 Bootstrapping squbs
监听在配置文件的根级别上声明。这个名称通常参照*-listener格式,但并不是必须的。 在监听条目内的type
字段定义了这个条目为监听。它必须设置为squbs.listener
。关于如何配置新的监听器来监听不同的端口,请参见上面的default-listener例子 。
除非服务路由将自己附加到监听器,监听器是不会启动的。换句话说,仅仅声明监听器不会导致监听器启动,除非监听器有真正的用途。
Pipeline
如果定义,一个默认的pipeline将被安装,对所有单个请求进行预处理,对所有返回进行后处理。服务可以指定一个不同的pipeline或不指定,这在Unicomplex & Cube Bootstrapping中有描述。应用或者基础设施可以实现他们自己的pipeline来预处理诸如打日志和跟踪。更多关于pipeline的细节描述请参见Streaming Pipeline.