Scala Slick 3 MySQL流媒体应用程序刚刚挂起。。。(不传输数据)
库依赖项Scala Slick 3 MySQL流媒体应用程序刚刚挂起。。。(不传输数据),scala,slick,akka-stream,Scala,Slick,Akka Stream,库依赖项 val enableJdbcStreaming: (java.sql.Statement) => Unit = { statement ⇒ if (statement.isWrapperFor(classOf[com.mysql.jdbc.StatementImpl])) { statement.unwrap(classOf[com.mysql.jdbc.StatementImpl]).enableStreamingResults() } } impli
val enableJdbcStreaming: (java.sql.Statement) => Unit = { statement ⇒
if (statement.isWrapperFor(classOf[com.mysql.jdbc.StatementImpl])) {
statement.unwrap(classOf[com.mysql.jdbc.StatementImpl]).enableStreamingResults()
}
}
implicit val actorSystem = ActorSystem()
implicit val actorMaterializer = ActorMaterializer()
val config = ConfigFactory.load()
val db = Database.forConfig("mysql")
val query = Tables.Foo.map(r => (r.id, r.pid)).result
val source = Source.fromPublisher[(Long, Option[Long])](db.stream(query.withStatementParameters(statementInit = enableJdbcStreaming)))
val future = source.runForEach(x => println(x))
import actorSystem.distpatcher
future.onComplete{ _ =>
db.close()
actorSystem.terminate()
}
Await.result(future, Duration.Inf)
Await.result(actorsystem.whenTerminated, Duration.Inf)
mysql配置
"com.lightbend.akka" %% "akka-stream-alpakka-cassandra" % "0.11",
"com.typesafe.slick" %% "slick" % "3.2.1",
"com.typesafe.slick" %% "slick-hikaricp" % "3.2.1",
"mysql" % "mysql-connector-java" % "5.1.44",
"ch.qos.logback" % "logback-classic" % "1.2.3"
当我运行此代码时。它只是一直在控制台上打印这些行
mysql {
profile = "slick.jdbc.MySQLProfile$"
dataSourceClass = "slick.jdbc.DatabaseUrlDataSource"
properties {
driver = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://server:3306/db"
user = "user"
password = "password"
}
connectionTimeout = 300
}
我等了很长时间,但它一直在打印这些行
我的期望是,它会立即开始为我逐行读取表格。我自己解决了这个问题。我想我没有正确地构建图表 我用RunnableGraph重写了我的图表。现在它工作得很好
[info] 19:20:31.647 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:21:01.649 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:21:31.656 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:22:01.661 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:22:31.668 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:23:01.674 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:23:31.680 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:24:01.687 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:24:31.693 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:25:01.699 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:25:31.706 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:26:01.708 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
尽管知道前一种方法为什么不起作用会很有趣。我自己解决了这个问题。我想我没有正确地构建图表 我用RunnableGraph重写了我的图表。现在它工作得很好
[info] 19:20:31.647 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:21:01.649 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:21:31.656 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:22:01.661 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:22:31.668 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:23:01.674 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:23:31.680 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:24:01.687 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:24:31.693 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:25:01.699 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:25:31.706 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
[info] 19:26:01.708 [mysql housekeeper] DEBUG com.zaxxer.hikari.pool.HikariPool - mysql - Pool stats (total=21, active=1, idle=20, waiting=0)
尽管了解前一种方法为什么不起作用会很有趣