2013-07-11 2 views
0

В настоящее время я использую Джерси 1.0 и собираюсь перейти на 2.0. Для отдыха просит может длиться в течение секунды или два я использую следующий шаблон:Джерси и AsyncResponse против перенаправления

  1. Клиентские вызовы GET или PUT
  2. сервер возвращает URL опроса для клиента
  3. КЛИЕНТ опрашивает URL, пока не получит перенаправление на завершенный ресурс

Довольно стандартный и простой. Тем не менее, я заметил, что у Джерси 2.0 есть функция AsyncResponse. Но похоже, что это делается без изменений на проводе. Другими словами, клиент по-прежнему блокирует результат, пока сервер выполняет асинхронную обработку запроса.

Так что хорошего в этом? Должен ли я использовать его вместо текущего асинхронного подхода для вызовов> 1 секунда? Или на самом деле просто поддерживать соединения, освобожденные на сервере, для вызовов, которые будут всего лишь несколько сотен миллисекунд?

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

ответ

0

AsyncResponse предположительно дает вам больше масштабируемости на сервере веб-приложений для стандартных стандартных запросов с точки зрения ресурсов пула потоков, но я не думаю, что это ничего не меняет о опыте клиента, который будет продолжать блокироваться при чтении их соединения. Поэтому, если вы уже внедрили решение для опроса со своей клиентской стороны, это не добавит вам никакой ценности.

+0

Правильно, так что я предполагаю, что резюме, приостановление и т. Д. AsyncResponse не будут работать с несколькими серверами без состояния? IOW, вы не можете приостановить работу на одном веб-динодере и возобновить работу с другим. –

+0

Я бы не подумал, что клиентский запрос и соединение все еще находятся на одном и том же сервере. – TheArchitect

Смежные вопросы