squbs-10.|squbs-10. 为阻塞API调用的阻塞Dispatcher

原文地址:The Blocking Dispatcher for Blocking API calls
这个话题并不讨论一般的dispatcher,而是关于特殊的squbs dispatcher配置。请查看Akka documentation 获得更多的dispatcher细节。
squbs提供了一个预设的dispatcher配置来使用阻塞调用。一般来说,这些用来同步调用数据库。这个reference.conf 定义的blocking-dispatcher如下:

blocking-dispatcher { # Dispatcher 是基于事件的dispatcher的名称 type = Dispatcher #使用哪种ExecutionService executor = "thread-pool-executor" thread-pool-executor { # 控制最小factor-base core线程数 core-pool-size-min = 2 # 核心线程factor用来确定线程核心线程数,采用如下公式: # ceil(available processors * factor) # 结果为 core-pool-size-min和core-pool-size-ma之间 core-pool-size-factor = 3.0 # 最大的factor-based线程数 core-pool-size-max = 24 # 控制factor-based max 最小线程数 # Minimum number of threads to cap factor-based max number to # (如果使用有界队列) max-pool-size-min = 2 # 最大的线程数由计算 ceil(available processors * factor) 确定 # (如果使用有界队列) max-pool-size-factor= 3.0 # 控制factor-based max 最大线程数 # (如果使用有界队列) max-pool-size-max = 24 } # 在线程跳向下一个actor之前,吞吐量定义了每个actor处理的最大消息量 # 设置为1则尽量的公平 throughput = 2 }如果actor需要使用blocking dispatcher,只需要如下配置actor:

【squbs-10.|squbs-10. 为阻塞API调用的阻塞Dispatcher】"/mycube/myactor" {
dispatcher = blocking-dispatcher
}
如果没有任何actor使用blocking-dispatcher,blocking-dispatcher将不会被初始化,也不会请求获取任何资源。**警告:**blocking-dispatcher 只能用在阻塞调用,不然性能会收到极大影响

    推荐阅读