Как получить данные в ответном канале spring integration. Возможность отправлять запрос с помощью исходящего шлюза TCP, но получать тайм-аут без чтения канала ответа

#spring #sockets #tcp #integration #communication

Вопрос:

В моем приложении требуется отправить строку хосту и получить ответ хоста через TCP-сокет. Я сделал это в простом программировании сокетов Java. Я хочу сделать то же самое, используя интеграцию spring. Я использовал исходящий шлюз TCP, так как ожидаю немедленного ответа от сервера через тот же сокет. Мой запрос доходит до сервера, но, похоже, ответ сервера не доходит до канала ответа. Время ожидания шлюза истекает через некоторое время.

Файл конфигурации пружины:

 <int:publish-subscribe-channel id="tcpChannel" />

<int-ip:tcp-connection-factory id="cfClient"
type="client"
host="localhost"
port="8376"
single-use="false"
so-timeout="30000"
connect-timeout="120"/>

<int-ip:tcp-outbound-gateway id="outGateway"
request-channel="tcpChannel"
connection-factory="cfClient"
request-timeout="10000"
remote-timeout="10000"/>
                              
<int:channel id="replyChannel"/>

<int:service-activator input-channel="replyChannel" ref="rs2GatewayListener" method="replyHandler">
</int:service-activator>
 

Шлюз сообщений:

 @MessagingGateway(name="tcpMsgGateway", defaultRequestChannel = "tcpChannel")
public interface Rs2TCPMessagingGateway {
  @Gateway
  String sendISOMessage(Message<String> isoMsg);
}
 

Метод replyHanlder никогда не вызывается. Я что-то здесь упускаю. Нужно ли мне использовать какие-либо сериализаторы и десериализаторы. Любые предложения будут оценены по достоинству.