2016-11-09 1 views
2

Je vais avoir PersistenceActor et je voudrais faire quelque chose dans sa méthode preRestart, en me basant sur un message, qui a provoqué le redémarrage. Pour l'acteur régulier qui serait facile, car il y a un message transmis à preRestart méthode:Comment obtenir le message causant le redémarrage dans Akka Persistence

def preRestart(reason: Throwable, message: Option[Any]) 

Toutefois, pour PersistentActor qui ne peut être fait de cette façon, parce que chaque fois None est passé comme un attribut de message. Elle est causée par ce morceau de code dans Eventsourced.scala:

override protected[akka] def aroundPreRestart(reason: Throwable, message: Option[Any]): Unit = { 
try { 
    internalStash.unstashAll() 
    unstashAll(unstashFilterPredicate) 
} finally { 
    message match { 
    case Some(WriteMessageSuccess(m, _)) ⇒ 
     flushJournalBatch() 
     super.aroundPreRestart(reason, Some(m)) 
    case Some(LoopMessageSuccess(m, _)) ⇒ 
     flushJournalBatch() 
     super.aroundPreRestart(reason, Some(m)) 
    case Some(ReplayedMessage(m)) ⇒ 
     flushJournalBatch() 
     super.aroundPreRestart(reason, Some(m)) 
    case mo ⇒ 
     flushJournalBatch() 
     super.aroundPreRestart(reason, None) 
    } 
} 
} 

Est-ce que quelqu'un sait pourquoi il est None passé, perdant le message d'origine?

Répondre