出现AWS经典负载均衡(Classic ELB)立即向客户端返回504错误,而后端未收到请求的问题,可能是由于连接超时或后端服务器没有及时响应造成的。以下是一种可能的解决方法,使用Apache Commons HttpClient的示例代码:
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
public class LoadBalancerExample {
public static void main(String[] args) {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet("http://your-backend-server-url");
// 设置连接超时时间为10秒
httpClient.getParams().setParameter("http.connection.timeout", 10000);
try {
HttpResponse response = httpClient.execute(httpGet);
// 处理响应
} catch (Exception e) {
e.printStackTrace();
}
}
}
在上面的示例代码中,我们使用Apache Commons HttpClient发送GET请求到后端服务器。通过设置连接超时时间为10秒,可以确保连接在超过该时间后会被关闭,从而避免长时间的等待。
另外,还可以通过检查后端服务器的日志来确定是否有其他原因导致未收到请求。可能需要检查网络配置、防火墙设置等等。
请注意,以上解决方法仅适用于使用Apache Commons HttpClient或本地Java客户端的情况。如果您使用的是其他HTTP客户端库,可能需要根据具体情况进行相应的调整。