Протобуф с http для пружинных загрузочных микросервисов
Я использую есть API A(написанный на Java), который вызывает удаленный сервис (написанный на Java) B . Удаленная служба B возвращает объект с именем "Курс".
Я хочу использовать protobuf для этой связи, поскольку она должна быть быстрее, чем JSON.
Код удаленного обслуживания B:
@RestController
public class RemoteServiceB {
@RequestMapping(value = "/myCourse", method = RequestMethod.GET)
public Course getMyCourse() {
Course response = MyCourse.Course.newBuilder().setCourseName("sd")build(); .
return response;
}
API код:
public class APIA{
public Course call(){
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet request = new HttpGet(url);
request.addHeader("accept", "application/x-protobuf");
HttpResponse httpResponse = httpClient.execute(request);
InputStream protobufStream = httpResponse.getEntity().getContent();
Course course = Course.parseFrom(protobufStream);
}
}
Я хочу понять, где именно используется сериализация / десериализация protobuf во всем этом потоке?
1. Используется ли сериализация protobuf, когда объект Course отправляет по HTTP в мой API? A. Если нет, то какой метод сериализации используется, и где именно тогда я должен использовать сериализацию protobuf во всем этом потоке?
2. Используется ли десбериализация protobuf, когда HTTP-ответ получен моим API A в строке кода ниже (из кода API A)
InputStream protobufStream = httpResponse.getEntity().getContent();
Если нет, то какой метод десериализации здесь используется?
3. Используется ли десбериализация protobuf в следующей строке (из кода API A)?
Course course = Course.parseFrom(protobufStream);
Я что-то упускаю в приведенном выше коде, чтобы использовать более высокую скорость, которую обеспечивает protobuf по сравнению с JSON?