Шаблон Java Socket Client - PullRequest
       13

Шаблон Java Socket Client

1 голос
/ 10 ноября 2011

Мое java-приложение должно отправлять сообщения (многопоточные) на сервер сокетов.Приложение может отправлять около 100-200 сообщений в секунду.

Я хочу знать, какой из подходов лучше для этого?

  1. Откройте один клиентский сокет и отправьтесообщение из всех потоков, хотя это один сокет. Недостатки: приходится обрабатывать логику переподключения при сбое соединения, может привести к потере многих сообщений при переподключении. Безопасность, блокировка ??
  2. Создайте новое клиентское сокетное соединение для каждого потока и закройте его после отправки. Недостатки: несмотря на то, что я закрываю сокет, порты будут ждать до периода TIME_WAIT.

Что является более практичнымподход?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Я бы предложил 3.: Откройте сокет для каждого потока и повторно используйте потоки (например, через пул потоков). Затем обработайте переподключение внутри потока или просто правильно расположите его и создайте новое. Таким образом, вы можете избежать проблем с блокировкой и синхронизацией

1 голос
/ 10 ноября 2011

100-200 сообщений в секунду не так уж много.Я не буду повторно подключаться каждый раз, так как это дорого.Если вы повторно используете ваше соединение, оно будет намного быстрее.

Если вы беспокоитесь о потере сообщений, вы можете отправлять партию сообщений или по одному за раз и ждать подтверждения от сервера, который у них есть.был получен.Таким образом, вы можете отправлять тысячи сообщений в секунду.

...