java - 与代理服务器一起使用时大型请求正文的 Netty 握手超时

标签 java netty sendgrid asynchttpclient

我正在调用具有巨大主体 (html) 的电子邮件营销服务。 body 的大小 = 117184。

我正在使用以 Netty 作为背景的 AsyncHttpClient。

当我直接调用请求时,它是成功的,但当我尝试使用内部 https 代理服务器时,它失败并出现以下异常。但是带有代理服务器的小型机体工作正常。以下是 Scala 代码:

val client = asyncHttpClient(config().setProxyServer(proxyServer("XX-XYXY-100X.XXXX.local", 8080)))
val whenResponse = client.preparePost("https://api.sendgrid.com/v3/mail/send")
  .addHeader("Authorization", "Bearer XXXXXXXXX")
  .addHeader("Content-Type", "application/json")
  .setBody(randomBody)
  .execute
  .get(1000, TimeUnit.SECONDS)

基本上:

  • 体型庞大且无代理服务器:工作正常。
  • 体积小,有或没有代理服务器:工作正常。
  • 带有代理服务器的大型机体:行不通。

对于使用代理服务器的大体请求,我看到以下异常。

Exception in thread "main" java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: handshake timed out
    at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
    at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915)
    at org.asynchttpclient.netty.NettyResponseFuture.get(NettyResponseFuture.java:207)
    at send.RequestSender$.send1(RequestSender.scala:27)
    at send.RequestSender$.delayedEndpoint$send$RequestSender$1(RequestSender.scala:47)
    at send.RequestSender$delayedInit$body.apply(RequestSender.scala:14)
    at scala.Function0.apply$mcV$sp(Function0.scala:34)
    at scala.Function0.apply$mcV$sp$(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scala.App.$anonfun$main$1$adapted(App.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:389)
    at scala.App.main(App.scala:76)
    at scala.App.main$(App.scala:74)
    at send.RequestSender$.main(RequestSender.scala:14)
    at send.RequestSender.main(RequestSender.scala)
Caused by: javax.net.ssl.SSLException: handshake timed out
    at io.netty.handler.ssl.SslHandler.handshake(...)(Unknown Source)

最佳答案

我已经报告了这个问题:https://github.com/AsyncHttpClient/async-http-client/issues/1559

他们的开发人员很快就解决了这个问题。

升级到 2.5.2 以上的版本可以解决这个问题

关于java - 与代理服务器一起使用时大型请求正文的 Netty 握手超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51260096/

相关文章:

java - 能够改变静态变量值

java - 累积/刷新消息的设计模式

java - 为什么Netty不执行我的定时任务?

python - 在 Twilio 和 Sendgrid api 中,计划消息的发送时间相差 5 小时 30 分钟

c# - Sendgrid 系统.ArgumentException : Unknown element: html

heroku - 使用 "heroku addons:create sendgrid:starter"时出现错误

java - 在 Java 中是否有更优雅的处理列表的方法? (Python 与 Java)

java - 使用 Java Config 的 Spring 集成和 JMS

java - Apache Mina SSHD 端口转发,如 NGROK

java - Netty读取确切的字节数