Использование фонового потока по сравнению с использованием очереди сообщений - PullRequest
6 голосов
/ 18 мая 2011

В настоящее время я работаю над серией оповещений, которые будут проверять состояние ответа от стороннего веб-сервиса и отправлять оповещения на основе состояния объекта ответа (например, тайм-ауты, неверные данные и т. Д.). Я хочу, чтобы основной поток продолжал работать, пока оценивается ответ и отправляются оповещения.

У меня есть два варианта:

  1. Используйте ActiveMQ и отправьте объект в качестве objectMessage в очередь для обработки.
  2. Используйте шаблон команды и создайте поток асинхронной команды, которая обрабатывает предупреждение.

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

Вопрос: Как бы вы решили, что использовать и почему?

Ответы [ 3 ]

6 голосов
/ 18 мая 2011

Два слова:

Гарантированная доставка.

Если это важно для вас, тогда вам нужна очередь сообщений.

2 голосов
/ 18 мая 2011

Звучит так, будто вы собираете что-то вместе для обработки событий в вашем приложении. Для этого у вас есть много опций в пакете java.util.concurrent . Очередь сообщений хороша для гарантии доставки (может обеспечить постоянство) и для отправки сообщений на несколько серверов.

ExecutorService в util.concurrent позволяет вам отправить задачу для выполнения в пуле потоков. Будущее, которое он возвращает, позволяет вам продолжить обработку и проверить результаты позже.

Future<?> submit(Runnable task) 

Если это не совсем то, что вам нужно, возможно, есть другие варианты в java.util.concurrent.

1 голос
/ 18 мая 2011

Я бы решил, основываясь на том, что вы уже думаете ... что полная очередь сообщений, хотя и очень мощная, намного больше, чем вам нужно.Не говоря уже о том, что это другой процесс / сервер / и т.д.Итак, я бы проголосовал за второй вариант.: -)

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