Search code examples
javaspringspring-integrationtcp

Spring Integration tcp/ip connection delay


We are using Spring integration 4.1.3.

Sometimes it takes more than 5 seconds to request a connection from a particular server.

What is happening between step1 and step2?

Why is it delayed?

Client Log

step1 :▶ DEBUG 11.28 18:14:33.237  [ajp-bio-8109-exec-3] org.springframework.integration.ip.tcp.connection.TcpNetClientConnectionFactory[obtainNewConnection:98] - Opening new socket connection to 10.0.12.111:36401
step2 :▶ DEBUG 11.28 18:14:38.306  [ajp-bio-8109-exec-3] org.springframework.integration.ip.tcp.connection.TcpNetConnection[<init>:138] - New connection 10.0.12.111:36401:2701:561f3524-c421-45ba-9ea5-76a7ddf96430

Client Config

<int:gateway id="gw-vacct-tcp-sender"
             service-interface="com.mainpay.pay.service.TcpSendVacctGateway"
             default-request-channel="vacct-input"
             default-reply-channel="vacct-reply"
             />

<int-tcp:tcp-connection-factory id="vacct-client"
                                type="client"
                                host="#{springSetting['pay.pg.ngin.vip']}"
                                port="#{springSetting['pay.pg.ngin.vacct.port']}"
                                serializer="TCPJsonSerializer8"
                                deserializer="TCPJsonDeserializer8"
                                single-use="true" 
                                so-timeout="20000"      

/>      

<int:channel id="vacct-input" />

<int-tcp:tcp-outbound-gateway id="vacct-outGateway" 
                              request-channel="vacct-input"
                              reply-channel="vacct-reply" 
                              connection-factory="vacct-client"  
                              reply-timeout="20000"
                              />

<int:channel id="vacct-reply" datatype="java.lang.String" />

Solution

  • Try setting lookup-host to false; perhaps there is a problem in the network with reverse host lookups. It appears that the lookup failed since it is an ip address in the connection id.

    10.0.12.111:36401:2701:561f3524-c421-45ba-9ea5-76a7ddf96430
    

    See the documentation.

    By default, reverse DNS lookups are done on inbound packets to convert IP addresses to hostnames for use in message headers. In environments where DNS is not configured, this can cause connection delays. You can override this default behavior by setting the lookup-host attribute to false.