【发布时间】:2016-04-07 14:32:43
【问题描述】:
Akka 和 Actors 的新手 - 我需要启动一些 Actor,这些 Actor 基本上会花费一生的时间阅读 Kafka 主题并写入 Ignite 缓存。我这样配置调度程序:
kafka-dispatcher {
executor = "thread-pool-executor"
type = PinnedDispatcher
}
我的演员是用.withDispatcher("kafka-dispatcher") 创建的,我的假设是每个演员都会被分配一个单独的线程。
这些演员基本上都是这样度过一生的:
override def receive: Receive = LoggingReceive {
case InitWorker => {
initialize()
pollTopic() // This never returns
}
}
换句话说,它们接收到初始化消息,然后调用pollTopic() 方法,该方法永远不会返回 - 它运行循环读取(在有数据之前将阻塞)然后写入数据。
我的问题:
- 这是犹太洁食吗?
- 是否有更好的方式,即更惯用的方式来做到这一点?请注意,
pollTopic()内的读取调用会阻塞。
【问题讨论】: