首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Akka-stream从Cassandra中过滤出特定事件

Akka-stream从Cassandra中过滤出特定事件
EN

Stack Overflow用户
提问于 2017-05-05 00:25:14
回答 1查看 103关注 0票数 0

我目前有一个由Akka和Cassandra支持的事件源服务。这是一个名为AuctionService的竞价系统,在某种程度上,我需要检索最后一个名为BiddenOnLot的竞价事件。为此,我使用akka-persistence-query

下面是我当前的代码:

代码语言:javascript
复制
        // obtain read journal by plugin id
        val readJournal = PersistenceQuery(context.system).readJournalFor[CassandraReadJournal](
          "cassandra-query-journal")

        // issue query to journal
        val source: Source[EventEnvelope, NotUsed] = readJournal.eventsByPersistenceId(self.path.name.toString, 0, Long.MaxValue)

        // materialize stream, consuming events
        implicit val mat = ActorMaterializer()

        source.runForeach(envelope ⇒ {
          if (envelope.event.isInstanceOf[BiddenOnLot]) {
            val biddenOnLot = envelope.event.asInstanceOf[BiddenOnLot]
            if (biddenOnLot.paddleId == paddleId) {
               // TODO: get last bid event by paddle id
            }
          }
        })

到目前为止,我遍历了所有事件,并可以确定其类型。但我真的很难隔离最后一个竞标事件,并能够异步使用它。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-05 03:43:23

您可以通过使用模式匹配来解构发出的EventEnvelope并将其映射到您想要的事件:

代码语言:javascript
复制
source.map {
    case EventEnvelope(_, _, _, bidenOnLot: BidenOnLot) if bidenOnLot.paddleId == paddleId => bidenOnLot
}.runForeach(println)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43788241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档