Интересно, есть ли размер результирующего набора по умолчанию при выполнении DBAction с гладкой интеграцией потокового акка.
Действительно (я использую akka-stream slick). Когда я пишу следующий запрос:
Slick.source(sql"""select * FROM DRUG""".as[(Map[String,String])])
как в
val tableRows =
Slick.source(sql"""select * FROM DRUG""".as[(Map[String,String])])
.map{e => RawData("DRUG", "/Users/xxxx/xxxx/WSP1WS5-DRUG-auto-model.ttl", "OBJECT", "", e)}
.mapAsyncUnordered(8){value =>
Future{
println(s"Writing {${value.toString}}")
val kryo = kryoPool.obtain()
val outStream = new ByteArrayOutputStream()
val output = new Output(outStream, 4096)
kryo.writeClassAndObject(output, value)
output.close()
kryoPool.free(kryo)
new ProducerRecord[String, Array[Byte]]("test", outStream.toByteArray)
}
}
.runWith(Producer.plainSink(producerSettings))
Мой запрос возвращает примерно 400 записей, а затем просто висит там. У меня есть около 5 тысяч записей в этой таблице. Это нормально?
Однако мне удалось получить их все, хотя, я считаю, медленнее, чем следовало бы, используя следующее утверждение:
Slick.source (sql "" "select * FROM DRUG Where ROWNUM <=
1000000000 ""». Как [(карта [String, String])]) </p>
Кстати, база данных, о которой я говорю, оракул. Следовательно, мне интересно, если это происходит из-за оракула, гладкости или интеграции с akka-stream.
Есть предложения по этому поводу?