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

Spring集成 http 出站网关超时处理

林修雅
2023-03-14

我有一个http出站网关,它将json消息发布到rest服务,现在rest将以json消息类型的http错误状态响应,以防我们的应用程序捕获任何错误。在将json消息发布到rest服务并获得http成功状态的愉快场景中,我们的应用程序也应该捕获json消息。

现在我通过Spring集成实现了什么,我能够发送消息并获得成功响应并捕获它,但在错误状态下Spring行为会抛出异常,我如何更改行为?

如果有任何超时,如何重试?

超文本传输协议出站网关配置下面

    <int-http:outbound-gateway request-channel="aggregatorChannel" reply-channel="responseChannel" charset="UTF-8"
    url="http://localhost:8090/receiveGateway" http-method="POST" reply-timeout="180000">               
    <int-http:request-handler-advice-chain >
        <int:retry-advice max-attempts="5" recovery-channel="aggregatorChannel" >
            <int:exponential-back-off initial="1000" multiplier="5.0" maximum="600000" />
        </int:retry-advice>
    </int-http:request-handler-advice-chain>
</int-http:outbound-gateway>

上面的配置将重试错误信息,我不想重试,我想重试,如果只有超时。

共有1个答案

邢凌
2023-03-14

您希望将行为更改为什么(当出现错误时)?

如果您手动连接重试拦截器的RetryTemboard,作为

编辑:

你想做什么还不完全清楚,但也许这会给你指明正确的方向。。。

<int-http:outbound-gateway request-channel="requestChannel" 
                           url="http://localhost:8080/http/receiveGateway"
                           http-method="POST"
                           request-factory="requestFactory"
                           expected-response-type="java.lang.String">
    <int-http:request-handler-advice-chain >
        <int:retry-advice max-attempts="5" recovery-channel="foo">
            <int:exponential-back-off initial="1000" multiplier="1.1" maximum="600000" />
        </int:retry-advice>
        <bean class="foo.MyExceptionAdvice" />
    </int-http:request-handler-advice-chain>
</int-http:outbound-gateway>

<bean id="requestFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory">
    <property name="connectTimeout" value="5000"/>
    <property name="readTimeout"    value="5000"/>
</bean>

如果自定义异常通知引发异常,则将重试该消息,并最终将其发送到恢复通道。如果自定义通知使用错误,它可以发送返回值。我对这个要点作了简单的解释。

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

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

  • 我有一个 FileUpload 事件,应该将其发送到 http:outbound upload URL。为此,我必须首先对登录 URL 进行身份验证并获取响应,并设置要执行的出站上传 URL 的会话 ID。在我的情况下,我有一个事件侦听器,它侦听应用程序以发布文件上传事件。发布后,我的侦听器可以拾取并执行流。我正在尝试了解如何实现这一点,因为文件上传对象需要保留,直到登录响应返回。谢谢!

  • 有多台服务器正在监听actiemq。链被配置为进行超文本传输协议[出站网关]调用。假设其中一台服务器接收消息,如果超文本传输协议调用因某种原因失败,则介于两者之间。消息应该放回队列,以便另一台服务器可以接收消息并进行处理。这可以使用Spring集成来实现吗?我在Transaction上读了很多,但是找不到可行的方法。

  • 我正在尝试将spring集成配置为向队列发送消息,然后接收消息,即非常简单的事情: 我认为解耦所必需的是在流程的两端都有一个消息网关。因此,我的第一次尝试(有效)如下所示: 其中MessageReceiverHandler()是扩展AbstractMessageHandler的bean。 所以上面我们有一个用于出站消息的消息网关。我假设我们也应该有一个用于入站消息的网关,允许我们将传入消息处理与应

  • 我有一个如下的集成,我从rest控制器调用这个方法,但回复超时并没有像我预期的那样工作。 我期望的是:如果在我给出的回复超时时间内没有响应,则返回timeout作为对客户端的响应。 对于通道配置中的超时持续时间,是否需要执行一些操作? 谢谢。