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

Jaxb Java SOAP客户端优化和异步客户端,jaxb,protocol-buffers,thrift,soap-client,vert.x,Jaxb,Protocol Buffers,Thrift,Soap Client,Vert.x,需要使用通过SOAP公开的第三方web服务。但是响应的对象图太深,响应时间很高:40-60秒。 JAXB编组和解编还增加了显著的延迟。是否有一种方法可以使用protobuf/thrift减少延迟。此外,一些最新的应用程序模块也迁移到Vertx。虽然CXF内置了asychHttpClient,但Vertx中是否有任何等效模块。与CXF客户端相比,使用它有什么好处?您在这里引用了两个不同的问题 1) 第三方服务需要40-60秒来响应 大多数情况下,您无法加快响应速度,因此必须按原样处理,而您使用的选

需要使用通过SOAP公开的第三方web服务。但是响应的对象图太深,响应时间很高:40-60秒。
JAXB编组和解编还增加了显著的延迟。是否有一种方法可以使用protobuf/thrift减少延迟。此外,一些最新的应用程序模块也迁移到Vertx。虽然CXF内置了
asychHttpClient
,但Vertx中是否有任何等效模块。与CXF客户端相比,使用它有什么好处?

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

1) 第三方服务需要40-60秒来响应

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

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


很可能节俭或协议缓冲区对您帮助不大,因为它们与SOAP/XML是完全不同的技术。可能您遇到的问题是,JAXB将整个消息读入内存,然后为其创建一个完整的对象图,而不管您实际需要的数据量如何。如果您实际上不需要所有数据,那么应该研究使用Java平台的一部分,如XML流API(StAX)。它允许您解析XML消息,而无需为不需要的数据创建对象模型。

如果向您公开的服务是SOAP。。。首先,你必须说服另一方重写他们的整个API层。40-60秒是请求和对外部SOAP WS的响应之间的时间,还是在你自己的层/服务内转换(封送/解封)接收到的对象?@ruff基本上是spring SOAP客户机,它在封送/解封后返回结果对象,因此是的,它包括封送/解封时间当您发送请求时,是否使用CXF客户端的异步方法?是的。在同步/异步客户端中,请求响应时间是相同的。我的优势是可以提出更多并发请求。它类似于
Future responseFuture=webclient.async().get()
谢谢,您是否对STAX有任何优于XSLT的偏好,performance-wise.XSLT还可以将soap响应转换为json响应(字符串)。这取决于您的用例。另外,我不确定如何将响应转换为JSON。如果您处理的是一个非常大的SOAP响应,而您只需要一小部分数据,我个人会考虑使用STAX,因为它给了您对如何进行语法分析的最大控制权。如果需要转换为JSON,您可能希望使用StAX与以下内容结合使用: