我们使用的是Spring集成4.1.3。
有时,从特定服务器请求连接需要5秒钟以上的时间。
步骤1和步骤2之间发生了什么?
为什么要推迟?
客户端日志
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
客户端配置
<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" />
尝试将lookup-host
设置为false;也许网络中存在反向主机查找的问题。查找似乎失败了,因为它是连接id中的ip地址。
10.0.12.111:36401:2701:561f3524-c421-45ba-9ea5-76a7ddf96430
请参阅文档。
默认情况下,对入站数据包进行反向DNS查找,以将IP地址转换为主机名,用于消息头。在未配置DNS的环境中,这可能会导致连接延迟。可以通过将
lookup-host
属性设置为false来覆盖此默认行为。