当前位置: 首页 > 知识库问答 >
问题:

CXF异步调用非实延迟

步炯
2023-03-14

我有cxfweb服务,我使用异步方法调用。我使用回调方法(使用javax.xml.ws.asynchHandler-http://cxf.apache.org/docs/developing-a-consumer.html)以获得如下响应:

 Future<?> asyncResponse = myWebService.testMethodAsync(param, new MyAsyncHandler());

这个方法很好,我得到了正确的响应。

我的问题是性能。我测量了刚好在上面行所需的时间,我的应用程序显示大约2000ms的上线(我用jmeter做了测试)。我的应用程序部署在tomcat中,并且在jmeter启动近50个线程后发生了异常延迟。测试开始时延迟小于5ms。但几分钟后,它突然达到接近1000ms,然后97%的请求在大约900ms到2000ms之间变化。

我用独立的java cxf async客户端代替web应用程序做了同样的测试,但是在上面的测试中总是返回不到5ms。因此,我怀疑,在我的web应用程序中可能存在线程调度问题(因为我的web应用程序在运行测试时会做很多其他事情,如果不做剧烈的更改,我无法停止这些服务)或者这里还有其他问题吗?可能是cxf async客户端使用的线程池用完了?

共有1个答案

颛孙镜
2023-03-14

问题是CXF loads CXF load default HTTPUrlConnection在JDK是同步的(加载的管道是< code > org . Apache . CXF . transport . http . urlconnectionhttpconduit ),因为类路径中没有包含必需的jar。解决了类路径问题,现在正在加载正确的管道(< code > org . Apache . cxf . transport . http . async client . asynchttpconduit )。更多信息可以在这里找到

 类似资料:
  • 我可能还不够清楚--情况是,我的现有代码不支持异步,我希望使用新的库,如System.net.http和只支持异步方法的AWS SDK。因此,我需要弥补这一差距,并能够拥有可以同步调用的代码,然后可以在其他地方调用异步方法。 我读了很多书,有很多次有人问这个问题,也有人回答这个问题。 从非异步方法调用异步方法

  • 没有await并且在非异步方法中调用异步方法的行为是什么?我这样问是因为我看到Visual Studio在调用异步方法时没有显示任何警告,好像这是一件非常正常的事情。在这种情况下,异步方法的行为是否像是同步的?

  • 本文向大家介绍JavaScript 异步调用,包括了JavaScript 异步调用的使用技巧和注意事项,需要的朋友参考一下 问题 可修改下面的 aa() 函数,目的是在一抄后用 console.log() 输出 want-value 但是,有额外要求: aa() 函数可以随意修改,但是不能有 console.log() 执行 console.log() 语句里不能有 setTimeout 包裹 解

  • Provider端异步执行将阻塞的业务从Dubbo内部线程池切换到业务自定义线程,避免Dubbo线程池的过度占用,有助于避免不同服务间的互相影响。异步执行无益于节省资源或提升RPC响应性能,因为如果业务执行需要阻塞,则始终还是要有线程来负责执行。 注意:Provider端异步执行和Consumer端异步调用是相互独立的,你可以任意正交组合两端配置 Consumer同步 - Provider同步 C

  • 从v2.7.0开始,Dubbo的所有异步编程接口开始以CompletableFuture为基础 基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。 使用CompletableFuture签名的接口 需要服务提供者事先定义CompletableFuture签名的服务,具体参见服务端异步执行接口定义: public interface Asyn