【发布时间】:2013-12-18 05:02:56
【问题描述】:
我不知道为什么会出现错误“deadLetters”
class MyActor extends Actor {
private def getIdList = Future { blocking(getIdListSync) }
private def getIdListSync = {
val inputStreamRaw = new URL(url).openConnection.getInputStream
val inputStream = scala.io.Source fromInputStream inputStreamRaw
val json = parse(inputStream getLines() mkString "\n")
val jsonIds = json \ "ids" \\ classOf[JInt]
jsonIds take idLimit map (_.toInt)
}
def receive = {
case Get =>
//doesn't work, the error is "sender" becomes "Actor[akka://Main/deadLetters]"
// getIdList onComplete {
// case Success(idList) =>
// sender ! Result(idList)
//
// case Failure(e) => // todo
// }
//works well
val idList = getInternalIdListSync
sender ! Result(idList)
}
}
如你所见,sender 在标题为getIdList 的方法中使用Future 和blocking 的情况下变为Actor[akka://Main/deadLetters]。这是为什么?我不应该使用它吗?
【问题讨论】:
标签: multithreading scala akka