Java SOAP客户端优化和异步客户端

时间:2015-11-10 06:54:27

标签: jaxb protocol-buffers thrift soap-client vert.x

需要使用通过SOAP公开的第三方Web服务。但响应是对象太深,响应时间非常长:40-60秒。 JAXB编组和解组也会在其上增加显着的延迟。有没有办法减少使用protobuf / thrift的延迟。最近的一些应用程序模块也迁移到Vertx。虽然CXF内置asychHttpClient,但Vertx中是否有任何等效模块。使用它而不是CXF客户端有什么好处?

1 个答案:

答案 0 :(得分:2)

您在这里引用了两个不同的问题。

1)第三方服务需要40-60秒才能响应。

大多数情况下,您无法加快响应速度,因此您必须按原样处理,而您选择的选择取决于您的应用程序。 Vert.x可能在这方面有所帮助,因为它在设计上是异步的。

2)响应的对象图很大,JAXB反序列化有很大的开销。

Thrift或Protocol Buffers很可能对你没什么帮助,因为它们与SOAP / XML完全不同。可能你遇到的问题是JAXB将整个消息读入内存然后为它创建一个完整的对象图,而不管你实际需要多少数据。如果您实际上并不需要所有数据,则应该使用类似Java平台的Streaming API for XML(StAX)进行调查。它允许您解析XML消息,而无需为不需要的数据创建对象模型。