Как реализовать асинхронную обработку с помощью приложения J2EE - PullRequest
3 голосов
/ 05 января 2010

У меня есть корпоративное приложение с около 2 тысячами одновременных пользователей каждый день. Эти пользователи обрабатывают звонки клиентов, поэтому скорость приложения имеет жизненно важное значение.

Когда пользователь завершает вызов, он передает всю полученную информацию. Этот коммит может занять от 10 до 45 секунд.

Я ищу способы убрать задержку у пользователя.

У нас есть веб-интерфейс, работающий в I.E. бэкэнд - это тяжелый Java, работающий на одном EJB.

Я хотел сделать этот процесс фиксации асинхронным, так как после того, как пользователь отправит запрос, ему не нужно ждать завершения фиксации, прежде чем перейти к следующему клиенту. Это то, что в настоящее время реализовано.

Изначально я думал о том, чтобы просто создать другой поток для обработки коммита, но это не так с EJB.

Другие возможные варианты: JMS или SIB,

Каким будет лучшее решение? Есть ли еще одна альтернатива, которую мне не хватает?

Ответы [ 2 ]

7 голосов
/ 05 января 2010

На самом деле есть два варианта таких случаев.

  • Первым будет использовать JMS. Его преимущество в том, что сервер обеспечивает всю необходимую инфраструктуру, и вам не нужно много реализовывать самостоятельно.
  • Другим способом будет регистрация запроса в базе данных и запланированное событие для обработки всех из них.

То, что вы выбираете, зависит от ваших требований. Если вам нужно обработать запросы, как только они поступят, вам нужно использовать JMS. В обоих случаях вам необходимо сохранить результат запроса в базе данных и спроектировать веб-сервис на самом верху. Внешний интерфейс может использовать это (путем опроса), чтобы представить результат пользователю.

2 голосов
/ 05 января 2010

Хотелось бы оставить комментарий, но не имеет возможности.

Другая возможность:

Оберните тяжелые EJB-компоненты в механизм очереди и предоставьте другой бин с тем же API, чтобы ваши клиентские коммуникации общались с новым бином и были быстрыми. Они принимают запрос, добавляют задание в очередь и немедленно возвращаются клиенту. Вам не нужно менять тяжелые сообщения EJB или клиента, просто вставьте посредник и добавьте слой переноса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...