原文地址:The Blocking Dispatcher for Blocking API calls
這個(gè)話題并不討論一般的dispatcher摹迷,而是關(guān)于特殊的squbs dispatcher配置膘螟。請查看Akka documentation 獲得更多的dispatcher細(xì)節(jié)跪但。
squbs提供了一個(gè)預(yù)設(shè)的dispatcher配置來使用阻塞調(diào)用澳厢。一般來說驼抹,這些用來同步調(diào)用數(shù)據(jù)庫毙驯。這個(gè)reference.conf 定義的blocking-dispatcher如下:
blocking-dispatcher {
# Dispatcher 是基于事件的dispatcher的名稱
type = Dispatcher
#使用哪種ExecutionService
executor = "thread-pool-executor"
thread-pool-executor {
# 控制最小factor-base core線程數(shù)
core-pool-size-min = 2
# 核心線程factor用來確定線程核心線程數(shù),采用如下公式:
# ceil(available processors * factor)
# 結(jié)果為 core-pool-size-min和core-pool-size-ma之間
core-pool-size-factor = 3.0
# 最大的factor-based線程數(shù)
core-pool-size-max = 24
# 控制factor-based max 最小線程數(shù)
# Minimum number of threads to cap factor-based max number to
# (如果使用有界隊(duì)列)
max-pool-size-min = 2
# 最大的線程數(shù)由計(jì)算 ceil(available processors * factor) 確定
# (如果使用有界隊(duì)列)
max-pool-size-factor = 3.0
# 控制factor-based max 最大線程數(shù)
# (如果使用有界隊(duì)列)
max-pool-size-max = 24
}
# 在線程跳向下一個(gè)actor之前哪自,吞吐量定義了每個(gè)actor處理的最大消息量
# 設(shè)置為1則盡量的公平
throughput = 2
}
如果actor需要使用blocking dispatcher丰包,只需要如下配置actor:
"/mycube/myactor" {
dispatcher = blocking-dispatcher
}
如果沒有任何actor使用blocking-dispatcher,blocking-dispatcher將不會(huì)被初始化提陶,也不會(huì)請求獲取任何資源烫沙。
**警告:** blocking-dispatcher 只能用在阻塞調(diào)用,不然性能會(huì)收到極大影響