gpt4 book ai didi

scala - 使用 Akka Streams 2.4.2 和 Slick 3.0 从 postgres 读取

转载 作者:行者123 更新时间:2023-12-01 00:44:31 25 4
gpt4 key购买 nike

尝试新创建的 Akka Streams。除了一件小事之外,它似乎正在工作 - 没有输出。

我有下表定义:

case class my_stream(id: Int, value: String)

class Streams(tag: Tag) extends Table[my_stream](tag, "my_stream") {
def id = column[Int]("id")
def value = column[String]("value")
def * = (id, value) <> (my_stream.tupled, my_stream.unapply)
}

我试图像这样将表的内容输出到标准输出:
def main(args: Array[String]) : Unit = {
implicit val system = ActorSystem("Subscriber")
implicit val materializer = ActorMaterializer()

val strm = TableQuery[Streams]
val db = Database.forConfig("pg-postgres")

try{
var src = Source.fromPublisher(db.stream(strm.result))
src.runForeach(r => println(s"${r.id},${r.value}"))(materializer)
} finally {
system.shutdown
db.close
}
}

我已经通过配置调试日志来验证查询正在运行。然而,我得到的只是这个:
08:59:24.099 [main] INFO  com.zaxxer.hikari.HikariDataSource - pg-postgres - is starting.
08:59:24.428 [main] INFO com.zaxxer.hikari.pool.HikariPool - pg-postgres - is closing down.

最佳答案

原因是 Akka Streams 是异步的和 runForeach返回将在流完成后完成的 Future,但未处理该 Future,因此 system.shutdowndb.close立即执行而不是在流完成后执行。

关于scala - 使用 Akka Streams 2.4.2 和 Slick 3.0 从 postgres 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35509549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com