Темы или JMS Что лучше? - PullRequest
       19

Темы или JMS Что лучше?

2 голосов
/ 31 июля 2009

Если я хочу запустить процесс (время, необходимое для завершения этого процесса в часах) в многопользовательской среде (через tomcat-servlet) Что лучше реализовать в этом процессе? 1) В темах или 2) В JMS Каковы преимущества и недостатки?

Ответы [ 3 ]

3 голосов
/ 31 июля 2009

Не совсем точно знаете, как вы планируете использовать JMS, часто клиенты делают так, чтобы запросы извлекались из очереди и имели некоторое (настраиваемое) количество рабочих потоков, выполняющих запросы и обслуживающих их. В моем случае я бы использовал MDB в качестве механизма для запуска этих рабочих потоков, но это всего лишь детали реализации.

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

Различные детали для выяснения, например, как сообщать результаты, чтобы браузер не зависал часами. Какой-то опрос Ajax или кометный пуш может быть?

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

0 голосов
/ 13 августа 2009

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

Если у вас будет только несколько запросов одновременно, потоки - это нормально. Простой фоновый поток, который поддерживает CountdownLatch, может быть использован для обработки любого переполнения.

Если вы ожидаете много запросов, JMS может лучше подойти для вашей задачи.

0 голосов
/ 03 августа 2009

Если я правильно понял ваши варианты, сделайте второй вариант, т.е. Пусть сервлет в Tomcat отправит сообщение клиенту JMS (предпочтительно, MDB в контейнере JMS). Там уволят длительный процесс. Делайте это вместо того, чтобы создавать новый поток в сервлете (опция 1), что на самом деле не рекомендуется.

...