Spring Integration TCP Несколько сокетов на стороне клиента к одному адресу сервера - PullRequest
0 голосов
/ 27 ноября 2018

Реквизиты:

  • Я должен открыть несколько сокетов / подключений к одному и тому же IP-адресу и порту сервера.
  • Я должен определить, с какого соединения поступил запрос, и
    перенаправить ответ на то же соединение.
  • Соединение представляется как Ip сервера и порт + Ip клиента и порт
  • Каждое соединение должно быть одноразовым = false, ожидается, что оно будет иметь несколько запросов / ответов

Я использую совместную работу TcpReceivingChannelAdapter и TcpSendingMessageHandler с TcpNetClientConnectionFactory.

ИIntegrationFlow для динамического создания этих соединений.


Как создать несколько сокетов для TcpNetClientConnectionFactory, которые все указывают на один и тот же хост и порт?

Я знаю, как установить пункт назначения с новым TcpNetClientConnectionFactory (hostПорт).Но я не могу увидеть или найти, как повлиять на то, какой порт используется

Должно ли это быть сделано с несколькими TcpNetClientConnectionFactory, каждый из которых связан с одним входящим и исходящим TCP-адаптером?

Как мне установитьлокальный порт для этих соединений?или хотя бы как его получить?

Кажется, я не нашел ни одного документа об этой опции.Наиболее похожим будет Этот вопрос

1 Ответ

0 голосов
/ 27 ноября 2018

Для каждого требуется отдельная фабрика соединений / адаптеры.

См. События TCP-соединения .

Используйте ApplicationListener или @EventListener для получения TcpConnectionEvent s.

Событие имеет getConnectionId(), которое содержит как локальный, так и удаленный порт;у события также есть имя компонента фабрики соединений.

Или вы можете привести getSource() к TcpConnection и вызвать getPort() (но вы не должны взаимодействовать с объектом TcpConnection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...