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

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

我正在阅读一个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)。有没有办法做到这一点,我总是采取最后的事件?

scala akka akka-stream
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.