ищу хорошее решение для вызова метода http-клиента в bean-компоненте (то есть MDB, сессия) - PullRequest
0 голосов
/ 22 апреля 2010

Я хотел бы вызвать метод клиента http (HTTP PUT, GET, и др. ) внутри компонента, но я хочу, чтобы эти компоненты, как MDB, так и сессионный компонент без сохранения состояния, выполнялись как можно быстрее ( очень короткое время жизни).

 ---[ejb request]--> bean -----[http request]---->  host

Проблема в том, что HTTP-соединение слишком медленное (особенно при подключении к медленным хостам). Возьмем, к примеру, MDB: из-за задержки HTTP MDB работает слишком долго, и очередь быстро останавливается с продолжающимися поступающими сообщениями. (Производитель сообщений быстрее, чем вызов метода http.)

Как я могу решить такую ​​проблему?

  1. используя NIO http клиент? это поможет?
  2. открыть дополнительные потоки для выполнения вызова http? (но запуск явного потока в бине не рекомендуется в Java EE)
  3. какой-нибудь асинхронный http-клиент? есть ли такие либы? они не используют поток?

1 Ответ

0 голосов
/ 06 апреля 2011

Использование клиента на основе NIO не приведет к изменению того факта, что ваши соединения и целевые хосты слишком медленные Полная остановка. Похоже, у вас есть фундаментальная проблема, которую можно решить другими методами:

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