需要使用通过SOAP公开的第三方Web服务。但响应是对象太深,响应时间非常长:40-60秒。
JAXB编组和解组也会在其上增加显着的延迟。有没有办法减少使用protobuf / thrift的延迟。最近的一些应用程序模块也迁移到Vertx。虽然CXF内置asychHttpClient
,但Vertx中是否有任何等效模块。使用它而不是CXF客户端有什么好处?
答案 0 :(得分:2)
您在这里引用了两个不同的问题。
1)第三方服务需要40-60秒才能响应。
大多数情况下,您无法加快响应速度,因此您必须按原样处理,而您选择的选择取决于您的应用程序。 Vert.x可能在这方面有所帮助,因为它在设计上是异步的。
2)响应的对象图很大,JAXB反序列化有很大的开销。
Thrift或Protocol Buffers很可能对你没什么帮助,因为它们与SOAP / XML完全不同。可能你遇到的问题是JAXB将整个消息读入内存然后为它创建一个完整的对象图,而不管你实际需要多少数据。如果您实际上并不需要所有数据,则应该使用类似Java平台的Streaming API for XML(StAX)进行调查。它允许您解析XML消息,而无需为不需要的数据创建对象模型。