Потоковые данные по HTTP с JavaJAVA

Программисты JAVA общаются здесь
Anonymous
Потоковые данные по HTTP с Java

Сообщение Anonymous »

У меня есть два приложения Java Spring Boot, и давайте назваем их источником и потребителем. У источника есть конечная точка/API/data , который возвращает бесконечный поток данных. Идея состоит в том, чтобы называть это от потребителя и прослушать куски данных каждые несколько секунд и «никогда» не закрывайте это соединение. Я уже сделал простой источник, который выглядит на данный момент: < /p>

@RestController
@RequestMapping ("/api")
public class SourceController {

private final Logger logger = LoggerFactory.getLogger(SourceController.class);

@GetMapping (value = "/data", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity data(final HttpServletResponse response) {
response.setContentType("application/json");
StreamingResponseBody stream = out -> {
try {
for (int i = 0; i < 10; i++) {
String content = "{\"counter\":" + i + "}\n";
out.write(content.getBytes());
logger.info("size: " + content.getBytes().length);
Thread.sleep(1000);
}
out.close();
} catch (final Exception e) {
logger.error("Exception", e);
}
};
logger.info("steaming response {} ", stream);
return new ResponseEntity(stream, HttpStatus.OK);
}
}
< /code>

Я не уверен, что это именно то, что я хочу, потому что когда я называю его с почтальником, ответ появляется через 10 секунд, когда возвращается < /code>.@RestController
@RequestMapping("/api")
public class ConsumerController {

private final Logger logger = LoggerFactory.getLogger(ConsumerController.class);

@GetMapping(value = "/consume", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity consume() throws IOException {
URL url = new URL("http://localhost:8080/api/data");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);

BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream())
);

String decodedString;
while ((decodedString = in.readLine()) != null) {
logger.info(decodedString);
}

in.close();

return new ResponseEntity("ok", HttpStatus.OK);
}
}


Подробнее здесь: https://stackoverflow.com/questions/586 ... -with-java

Вернуться в «JAVA»