Ответ на ваш вопрос включает в себя несколько шагов, как на стороне сервера, так и на стороне клиента.Примечание: все приведенные ниже примеры кода для краткости написаны на языке scala, а не java.На стороне сервера вам необходимо реализовать:
1.Потоковая передача данных из БД
Существует еще один стек / вопрос , который объясняет, как извлечь строки из базы данных с использованием потоковых методов.Конечный результат - у вас есть источник строк:
type DataObject = ???
val source : Source[DataObject,_] = ??? // see linked answer
2.Преобразование объекта DataObject в байты
На эту часть можно ответить только зная специфику ваших данных, и, похоже, эта часть уже реализована:
val converter : DataObject => ByteString
3.Присоединение к конечной точке REST
Вы можете использовать akka-http
для настройки конечной точки REST, которую клиенты могут запрашивать для получения данных.Source
ваших значений ByteString
будет источником, подающим потоковую сущность для ваших HttpResponse
Настроить Route
, который отвечает на GET
запросов по определенному пути:
val route : Route =
get {
path("/queryDB") {
complete(HttpResponse(entity = HttpEntity(ContentTypes.`application/octet-stream`, source.map(converter))))
}
}
И используйте Route для запуска вашего сервиса:
Http().bindAndHandle(route, "localhost", 8080)
На стороне клиента есть подобных механизмов для чтения данных из HttpResponse.