Как взять последнее событие из потока событий Кассандры - PullRequest
0 голосов
/ 26 февраля 2019

Я читаю поток событий Кассандры и хочу получить последний элемент.В настоящее время я делаю это так:

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 голосов
/ 26 февраля 2019

Использование Sink.last или Sink.lastOption:

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

или

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