我有一个如下的集成,我从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();
}
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入站网关构建一个简单的应用程序。下面是我得到的运行时异常。 下面是代码文件。 波约 服务 } 服务激活器 } 存储库 请帮助我,我正在试图找到异常发生的原因,但无法解决。提前谢谢。 集成文件。