Учитывая простой сценарий сетевого взаимодействия, в котором клиент «извлекает» данные с сервера по одному объекту за раз, какой будет наилучший подход для минимизации нехватки буфера?
Типичным вариантом использования может бытьодно соединение производитель / потребитель, где клиентское приложение отправляет запрос на сервер базы данных через Java SDK и получает results iterator
(курсор) объекты в качестве возвращаемого значения запроса.
В идеальных условиях сети,последовательного вызова метода итератора next()
достаточно для своевременного получения всех результатов запроса.Однако, если соединение имеет различное время ответа (например, из-за перегрузки на сервере или в сети), вызовы метода next()
будут периодически возвращаться или даже блокироваться в течение более длительных периодов времени.
Использование очереди (например, Java
BlockingQueue
), где много объектов написано перед чтением результатов (то есть, перед вызовом метода next()
), может сгладить это изменение задержки.Есть ли более подходящий способ?