我有一项服务,期望以每分钟〜5个或更多请求的速度执行请求。此服务取决于Apache AsyncHttpClient。每隔几分钟,客户机就会达到某种条件,从而导致 java.lang.IllegalStateException:无法执行请求。 I/O react 器状态:STOPPED 。对客户端的所有请求均以相同的异常消息开始失败。重新启动服务后,此循环重复进行。
确实很难调试此问题,因为请求执行失败出乎意料地不会导致对AsyncResponse的 failed()方法的回调。
据我所知,HttpCore NIO 中的中有一个修复HTTPCORE-370,它解决了4.3.2中的类似问题。我正在使用以下版本-
commons-httpclient-3.1.jar
httpasyncclient-4.1.1.jar
httpcore-4.4.4.jar
httpcore-nio-4.4.4.jar
然而看到这个问题。
最佳答案
我一直在我的应用程序中处理相同的异常,最后我从这篇文章中找到了一个有用的建议-http://httpcomponents.10934.n7.nabble.com/I-O-reactor-status-STOPPED-td29059.html
如果保留对ConnectionManager的IOReactor的引用,则可以调用此方法以深入了解实际问题:
http://hc.apache.org/httpcomponents-core-4.4.x/httpcore-nio/apidocs/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.html#getAuditLog()
原来,我在自己的代码中做的事情非常愚蠢。但直到阅读审核日志,我才能弄清楚。