如何从Cassandra事件流中获取最后一个事件

时间:2019-02-26 20:47:05

标签: scala akka akka-stream

我正在阅读cassandra事件流,并希望获取最后一个元素。我目前正在这样做:

def myData: Future[Long] =
  readJournal(myPersistenceId)
    .drop(5)
    .take(1)
    .map(l => l.mydata)
    .runWith(Sink.head)

之所以行之有效,是因为我知道我将获得6个事件,而要获得最后一个事件,我将放弃5并参加1。但是,我想知道是否有一种方法可以使我不对drop(5)take(1)进行硬编码。有什么办法可以让我总是参加上一个比赛吗?

1 个答案:

答案 0 :(得分:2)

使用Sink.lastSink.lastOption

def myData: Future[Long] =
  readJournal(myPersistenceId)
    .map(_.mydata)
    .runWith(Sink.last)

def myData: Future[Option[Long]] =
  readJournal(myPersistenceId)
    .map(_.mydata)
    .runWith(Sink.lastOption)