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

Spring集成@网关回复超时

能逸清
2023-03-14

我有一个如下的集成,我从rest控制器调用这个方法,但回复超时并没有像我预期的那样工作。

我期望的是:如果在我给出的回复超时时间内没有响应,则返回timeout作为对客户端的响应。

对于通道配置中的超时持续时间,是否需要执行一些操作?

谢谢。

@Gateway(requestChannel = REQUEST_CHANNEL, replyChannel = RESPONSE_CHANNEL, requestTimeout = 5000, replyTimeout = 5000)
Mono<ResponseObject> sendRequestObject(RequestObject request);

@Bean    
public IntegrationFlow myRequestFlow() {     
     return IntegrationFlows.from(REQUEST_CHANNEL)
           .enrichHeaders(HeaderEnricherSpec::headerChannelsToString)
           .handle(message -> {
               // I didn't send anything on the response channel.
               System.out.println(message);    
            })
           .get(); 
       }  

@Bean
public IntegrationFlow myResponseFlow(MessageChannel myResponseChannel) { 
     return IntegrationFlows.from(myResponseChannel)
               .channel(RESPONSE_CHANNEL)
               .get(); 
       }

共有1个答案

和斌
2023-03-14

GatewayProxyFactoryBean的当前默认行为是在回复超时时返回null。逻辑如下:

if (reply == null && this.errorOnTimeout) {
            throwMessageTimeoutException(object, "No reply received within timeout");
}

默认情况下,errorOnTimeout是false,我看不出我们有一个来自注释的钩子来配置它。请随时就此事提出GH问题。

无论如何,我没有看到MonoReplyChannel中涉及ReplyTimeout。因此,从网关的角度来看,这可能是另一个改进。

但我仍然认为,您的web客户端应该设置一些请求超时,以避免无限期等待。

 类似资料:
  • 我有一个http出站网关,它将json消息发布到rest服务,现在rest将以json消息类型的http错误状态响应,以防我们的应用程序捕获任何错误。在将json消息发布到rest服务并获得http成功状态的愉快场景中,我们的应用程序也应该捕获json消息。 现在我通过Spring集成实现了什么,我能够发送消息并获得成功响应并捕获它,但在错误状态下Spring行为会抛出异常,我如何更改行为? 如果

  • 但我得到的错误如下: POM: 我按以下方式配置入站网关: 并且,服务激活器: 顺便说一句,只有当我在服务激活器中删除outputChannel="outputChannel"时,它才有效。 这个问题有什么解释吗,我有什么误解吗?

  • 我使用的API分为两个步骤: 它以异步方式开始处理文档,向您提供用于步骤2的id 因此,问题是如何为HTTP出站网关实现自定义的“成功”标准。我还想将其与我已经实现的RetryAdvice结合起来。 我已经尝试了以下操作,但首先HandleMessage建议中提供的消息的有效负载为空,其次重试未触发: 我已经从4年前的阿特姆找到了这个答案,但首先我没有在出站网关上找到回复通道方法,其次不确定这种情

  • 这里排着队 但我用 使用请求/响应体系结构。它确实工作得很好,因为它提供了动态路由,手动创建tcp客户端。

  • 我尝试使用以下代码,得到了回应:状态:405方法不允许。这是我的Http请求:http://localhost:8090/services/test?name=test.代码或http请求有什么问题?

  • 我不熟悉Spring集成。我正在尝试使用http入站网关构建一个简单的应用程序。下面是我得到的运行时异常。 下面是代码文件。 波约 服务 } 服务激活器 } 存储库 请帮助我,我正在试图找到异常发生的原因,但无法解决。提前谢谢。 集成文件。