2010-01-05 1 views
3

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

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

Я изучаю способы отсрочки от пользователя.

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

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

Первоначально я думал только о том, чтобы создать еще один поток, чтобы обработать фиксацию, но это не имеет никакого отношения к EJB.

Других вариантов я могу думать о том, будут использовать JMS или SIB,

Что было бы лучшим решением? Есть ли другая альтернатива, которую я пропускаю?

+2

Я бы, наверное, пошел JMS. Он дает вам асинхронное требование, он дружелюбен к JEE, он позволяет масштабировать и может обеспечить хорошую надежность. Использование SIB связано скорее с более совместимым протоколом, чем с RMI. –

ответ

7

Существует фактически две альтернативы для подобных случаев.

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

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

2

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

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

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

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