gcp ja night #31 での発表資料です。
http://gcpja.connpass.com/event/23874/
[補足記事]
http://qiita.com/na_ga/items/d89b320ba098a0941043
http://qiita.com/na_ga/items/7c3cc3f52dd4068fd319
50. Projection
val readJournal = PersistenceQuery(system)
.readJournalFor[LeveldbReadJournal](LeveldbReadJournal.Identifier)
implicit val mat = ActorMaterializer()(system)
val dao = new ThreadsDao(dbConfig)
val projection = new ThreadProjection(dao)
readJournal
.eventsByTag("Thread", projection.lastOffset)
.mapAsync(1) { envelope =>
projection.update(envelope.event).map(_ => envelope.offset)
}
.mapAsync(1) { offset => projection.saveProgress(offset) }
.runWith(Sink.ignore)