为什么persist方法从来不工作?

问题描述 投票:0回答:1

我在使用persistenceActor,但是当我调用persist()方法时发现 回调 从来没有达到我不能找到任何错误的终端


演员代码

   class MajorEventActor extends Timers with PersistentActor with ActorLogging{
    var currentSeqNr = 0;
    timers.startTimerWithFixedDelay("majorevent",FetchMajor,1 hour)
    override def receiveRecover: Receive = {
      case value:MajorEvent =>
          log.info("\u001b[31;1mrecovering major event")
          currentSeqNr = currentSeqNr + 1
    }
    override def receiveCommand: Receive = {   
      case FetchMajor =>
       log.info("start")
        getMajorEvent.onComplete{
          case Success(value) => //value is country
            log.info(s"$value")
            persist(value){e=>{
              log.info(s"$e")
              log.info("\u001b[32;1mvalue is persisted in levelDB")
              currentSeqNr = currentSeqNr + 1
            }}
            log.info("complete")
          case Failure(value) =>  println("\u001b[32;1merror from wikipedia")
        }
    }

    override def persistenceId: String = "majorevent"
  }

终端输出

[INFO] [05/03/2020 15:58:31.082] [main-akka.actor.default-dispatcher-4] [akka://main/user/event] start
[INFO] [05/03/2020 15:58:34.019] [main-akka.actor.default-dispatcher-5] [akka://main/user/event] MajorEvent(Major events of COVID19 pandemic in India in May,List(News(1 May,Nationwide lock-down further extended till 17 May), News(2 May,10,000 confirmed recoveries)))
[INFO] [05/03/2020 15:58:34.019] [main-akka.actor.default-dispatcher-5] [akka://main/user/event] complete

配置文件

  akka.persistence.journal.plugin = "akka.persistence.journal.leveldb"
akka.persistence.journal.leveldb.dir = "target/levelDB/journal"


akka.persistence.snapshot-store.plugin = "akka.persistence.snapshot-store.local"
akka.persistence.snapshot-store.local.dir = "target/levelDB/snapshots"
akka.actor.allow-java-serialization = on

主类

val majorEvent = actor.actorOf(Props[MajorEventActor],"event")
   majorEvent ! FetchMajor
scala akka akka-http akka-persistence
1个回答
0
投票

通过使用akka.pattern中的pipeTo方法解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.