我已實現了以下PersistedActorPersistentActor沒有收到命令
import akka.actor._
import akka.persistence._
object TaskDispatcher {
/**
* Create Props for the actor
*/
def props(): Props = Props(new TaskDispatcher())
case class AddEndpoint(serverEndpoint: ActorRef, id: String)
}
class TaskDispatcher() extends PersistentActor with ActorLogging {
import TaskDispatcher._
override def persistenceId = "task-dispatcher-persistence-ID"
// Actor State
var endpoints: Map[String, ActorRef] = Map()
def receiveRecover: Receive = {
case AddEndpoint(serverEndpoint, id) =>
endpoints += (id -> serverEndpoint)
}
def receiveCommand: Receive = {
case AddEndpoint(serverEndpoint, id) =>
log.info("AddEndpoint received")
persistAsync(AddEndpoint(serverEndpoint, id)) { command =>
endpoints += (id -> serverEndpoint)
}
}
}
我創建PersistedActor的實例,我通過其他演員
val taskDispatcher =
context.actorOf(Props[TaskDispatcher], "task-dispatcher")
taskDispatcher ! AddEndpoint(self, id)
發送消息AddEndpoint吧我以前這個演員的非持久版本和一切工作。現在演員不會收到AddEndpoint消息。我注意到它,因爲日誌不打印「AddEndpoint收到」消息。我究竟做錯了什麼?
您正在使用哪種期刊?你確定它正在工作(數據庫可用等)? –
我正在使用MongoDb。我不知道我正在使用哪種日記。我如何檢查它?不過,我嘗試從類型安全下載的ExamplePersistentActor,它似乎工作。 –
你包括哪些依賴關係將akka連接到mongo,ironfish(https://github.com/ironfish/akka-persistence-mongo)? –