Проблема с параллелизмом Socket Client Java - PullRequest
0 голосов
/ 04 октября 2018

У меня есть система, которая должна обрабатывать более 200 транзакций в минуту на сокет TCP / IP.В настоящее время я создаю новый сокет для каждой поступающей транзакции, и после получения ответа я закрываю сокет с помощью API .close () java.net.Socket.У меня есть 2 проблемы:

  • У меня ограниченное количество живых соединений с сервером в количестве 20 штук.
  • Когда я выполняю .close (), он оставляет меня в сокете в состоянии TIME_WAIT, котороезаставляет меня занять этот сокет.

Какой подход следует использовать?Среди подходов, которые рассматриваются, следующие:

  • Используйте сокет, который не блокируется с помощью пакета java.nio, в результате очень важно получить ответ отсокет и, как я читал, conrol немного теряется.

  • Создание потока каждого из запросов, и он завершается по завершении (у меня все еще будет проблема TIME_WAIT, о которой я упоминал).

  • Создание пула разъемов Socket, которые всегда остаются открытыми, проверка нагрузки каждого из них и принятие решения о том, какие из них использовать.

...