【发布时间】:2016-03-20 07:53:10
【问题描述】:
使用 Slick,您可以执行以下操作以从表中生成结果流:
val q = for (e <- events) yield e.name
val p: DatabasePublisher[String] = db.stream(q.result)
p.foreach { s => println(s"Event: $s") }
这将打印events 表中的所有事件并在最后一行之后终止。
假设当新行进入events 表时,您可以通过某种方式得到通知,是否可以编写一个流,在插入事件时连续输出事件?一种tail -f 用于数据库表。
我认为 Slick 本身不会支持这一点,但我认为应该可以使用 Akka 流来提供帮助。因此,如果您可以从 Slick Source 获取某些内容直到它为空,然后等待事件指示表中的更多数据,然后流式传输新数据。可能通过使用ActorPublisher 来绑定此逻辑?
只是想知道是否有人在这方面有任何经验或任何建议?
【问题讨论】:
-
这感觉有点像 Spark 的 Dstream:spark.apache.org/docs/latest/api/scala/…
标签: scala slick akka-stream reactive-streams