2013-11-27 5 views
1

Я ранее планировал периодическое пакетное задание с планированием JMX с использованием org.jboss.varia.scheduler.Scheduler в JBoss 5. Эта поддержка удалена в JBoss 7.1.Многопоточные запланированные задания в JBoss 7.1

Единственная альтернатива, которую я нашел, - это аннотация @schedule для EJB. Однако задание, выполняемое внутри EJB, не разрешено запускать потоки. Очень важно запустить это задание пакетного импорта в нескольких параллельных потоках, чтобы более эффективно использовать аппаратные ресурсы, экономя часы обработки.

Как назначить задание в JBoss 7.1, которое может вызывать EJB из нескольких потоков параллельно?

ответ

2

Традиционно путь, когда требуется параллельное выполнение, использует MDB. (. По традиции я имею в виду, асинхронные вызовы, но это новая функция EJB 3.1 Я думаю, так не для JBoss 7.1)

Схема установки является следующим:

  1. @Schedule 'd EJB, который запускает пакетный процесс.
  2. Очередь.
  3. MDB, слушая эту очередь. MDB должен быть настроен на запуск как можно большего количества экземпляров (фактически потоков), как в старой задаче.
  4. Объект сообщения, который будет вставлен в очередь и будет представлять задание, которое должно быть выполнено MDB.

При запуске 'd EJB он будет вызывать соответствующее количество сообщений о задании в очередь. Они будут доставлены и выполняться параллельно экземплярам MDB контейнером.

В качестве (возможно, безразличного) бонуса код становится стандартным компилятором и не зависит от конкретного API-интерфейса сервера приложений.

+0

Спасибо, вы, вероятно, правы, но это похоже на серьезный перебор для задачи. –

+0

Я не уверен, что это действительно так, но вы можете быть правы. В сущности, вам придется реорганизовать существующий код для запуска или вызова MDB (это не должно быть большим). Добавьте очередь (там должно быть много документации). И напишите '@ Schedule''d EJB (не большой). Затем снова ваш код, и вы знаете лучше ... –

+0

В моем случае обработка не может быть полностью параллельной, поэтому я должен иметь код, управляющий очередью, возможно, имея несколько очередей (импорт файлов, которые зависят друг от друга, должен быть последовательно , другие могут быть параллельны). Но моя главная проблема заключается в том, что установка и обслуживание очереди может быть довольно сложной, когда дело касается операций и настройки. Во всяком случае, это, вероятно, причина, почему более легкие контейнеры, чем EJB, настолько популярны в эти дни :) Спасибо. –

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