Протобуф с 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?

0 ответов

Другие вопросы по тегам