gpt4 book ai didi

java - Spring-remoting SimpleHttpInvokerRequestExecutor 在不应该重试请求时重试请求

转载 作者:行者123 更新时间:2023-12-02 01:08:04 27 4
gpt4 key购买 nike

我正在调查一个非常奇怪的问题。我正在从事的项目使用 Spring-remoting 通过 http 调用方法。根据我到目前为止收集到的信息,会发生以下情况:

  1. 我的客户端代码执行对服务器的请求
  2. 服务器开始处理请求,但速度很慢
  3. 25-30 秒后,新请求到达服务器
  4. 第二个请求完成,客户端继续处理
  5. 过了一会儿,第一个请求完成了,但客户端不再关心

由于我的客户端代码仅对 Spring 远程客户端执行一个请求,并且客户端在其接收到的第二次调用完成后继续运行,因此我只能断定这种情况发生在 Spring 远程客户端的某个位置。

客户端使用 AbstractHttpInvokerRequestExecutor 进行实际的 http 调用,而这又使用 SimpleHttpInvokerRequestExecutor 发出请求。但是,据我所知,这没有重试请求的机制。所以现在我陷入了困境。

有人能想到什么可能导致这种行为吗? (我试图保持问题简洁,但如果需要,我可以提供更多详细信息。)

最佳答案

只是给您一些指导的想法,不一定是解决方案。使用第三方 Http 客户端(不是来自 Spring 的客户端)来查看它是否改变了行为。这可能会帮助您查看是否是 SimpleHttpInvokerRequestExecutor 重试“有罪”或其他原因。这是一个非常简单的3D方HttpClient:在MgntUtils开源库中提供(由我编写)。使用起来非常简单。看看Javadoc 。库本身提供为 Maven artifacts以及 Git (包括源代码和Javadoc)。总而言之,您的代码可能如下所示:

private static void testHttpClient() {
HttpClient client = new HttpClient();
client.setContentType("application/json");
String content = null;
try {
content = client.sendHttpRequest("http://www.google.com/", HttpMethod.GET);
//content holds the response. Do your logic here
} catch (IOException e) {
//Error Handling is here
content = TextUtils.getStacktrace(e, false);
}
}

关于java - Spring-remoting SimpleHttpInvokerRequestExecutor 在不应该重试请求时重试请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57712410/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com