Spring integration - Retry to establish connection on exception scenarios

孤者浪人 提交于 2021-01-29 09:41:06

问题


My application communicates to a third party system using spring integration. I send a payload for which I get a response that I parse and use. All good. Please find below the SI xml that I use.

Now I want to application retry to establish connection on exception scenarios where the server I'm trying to connect isn't available or on time outs or if it refuses to connect etc. How can I achieve this using SI xml configuration? Please guide.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-ip="http://www.springframework.org/schema/integration/ip"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
    http://www.springframework.org/schema/integration/ip http://www.springframework.org/schema/integration/ip/spring-integration-ip.xsd">



<int:gateway id="gw" service-interface=" com.RxGateway"
    default-request-channel="objectOut" />

<int:channel id="objectOut" />

<int-ip:tcp-connection-factory id="client"
    type="client" host="10.236.249.xx" port="9103" single-use="false"
    so-timeout="50000000" using-nio="false" so-keep-alive="true"
    serializer="customDSerializer" deserializer="customDSerializer" />

<bean id="customDSerializer" class="com.CustomSerializerDeserializer">
    <property name="maxMessageSize" value="4096" />
</bean>

<int-ip:tcp-outbound-gateway id="outGateway"
    request-channel="objectOut" reply-channel="toSA" connection-factory="client"
    request-timeout="100000" reply-timeout="50000"/>

<int:service-activator input-channel="toSA"
    ref="rxService" method="parseResponse"/>

<bean id="rxService" class="com.RxService"/>

<int:channel id="toSA" />
<int:channel id="bytesIn" />

</beans>

回答1:


You can add a retry-advice into your <int-ip:tcp-outbound-gateway>:

<int-ip:tcp-outbound-gateway>
    <int-ip:request-handler-advice-chain>
        <int:retry-advice/>
    </int-ip:request-handler-advice-chain>
</int-ip:tcp-outbound-gateway>

See more info in the Reference Manual: https://docs.spring.io/spring-integration/docs/current/reference/html/#message-handler-advice-chain



来源:https://stackoverflow.com/questions/54746778/spring-integration-retry-to-establish-connection-on-exception-scenarios

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!