带http的Protobuf用于春季启动微服务

时间:2018-06-26 23:05:02

标签: spring-boot serialization deserialization protocol-buffers protobuf-java

我正在使用一个API A(用Java编写),该API调用远程服务(用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 A代码:

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。当Course对象通过HTTP发送到我的API A时,是否使用了protobuf序列化?如果没有,那么使用哪种序列化技术,然后在整个流程中我应该在哪里使用protobuf序列化?

2。当我的API A在下面的代码行(来自API A的代码)获得http响应时,是否使用protobuf反序列化

InputStream protobufStream = httpResponse.getEntity().getContent();

如果没有,那么这里使用哪种反序列化技术?

3.protobuf反序列化是否也用于下一行(根据API A的代码)?

Course  course = Course.parseFrom(protobufStream);

我是否缺少上面的代码来利用protobuf通过JSON提供的更快速度?

0 个答案:

没有答案