Проблема с параллелизмом Socket Client Java
У меня есть система, которая должна обрабатывать более 200 транзакций в минуту на сокет TCP / IP. В настоящее время я создаю новый сокет для каждой поступающей транзакции, и после получения ответа я закрываю сокет с помощью API.close () java.net.Socket. У меня 2 проблемы:
- У меня ограниченное количество 20 живых подключений к серверу.
- Когда я выполняю.close (), он оставляет сокет в состоянии TIME_WAIT, что заставляет меня занять этот сокет.
Какой подход следует использовать? Среди подходов, которые замечены, являются следующие.
Используйте сокет, который не блокируется с пакетом java.nio, в результате получается, что очень важно получить ответ из сокета, и, как я прочитал, контроль немного теряется.
Создание потока для каждого из запросов и его закрытие по окончании (у меня все еще будет проблема TIME_WAIT, о которой я упоминал).
Создайте пул соединений Socket, которые всегда остаются открытыми, проверяйте нагрузку каждого из них и принимайте решение о том, какие из них использовать.