В настоящее время у меня есть контейнер tomcat - на нем запущен сервлет, который прослушивает запросы. Мне нужно, чтобы результат HTTP-запроса был представлен в очередь заданий, которая затем будет обрабатываться асинхронно. Я хочу, чтобы каждое «задание» сохранялось подряд в БД для отслеживания и восстановления в случае сбоя. Я много читал. Вот мои варианты (обратите внимание, я должен использовать вещи с открытым исходным кодом для всего).
1) JMS - использовать ActiveMQ (но кто является потребителем задания в этом случае другим сервлетом?)
2) Мой запрос создать строку в БД. Имейте отдельный сервлет внутри моего контейнера Tomcat, который всегда работает - он использует Quartz Scheduler или утилиты, предоставленные в java.util.concurrent, чтобы непрерывно обрабатывать строки как задания (использует пул потоков).
Я склоняюсь к последнему, потому что просмотр документации JMS вызывает у меня головную боль, и хотя я знаю, что это более надежное решение, мне нужно реализовать это относительно быстро. Я не ожидаю огромных нагрузок в первые дни развертывания этого сервера в любом случае.
Многие люди говорят, что Spring может подойти как для 1, так и для 2. Однако я никогда не использовал Spring и даже не знаю, как начать использовать его для решения этой проблемы. Любые указатели о том, как погрузиться без переписывания всего моего проекта, были бы полезны.
В противном случае, если бы вы могли взвесить вариант 1 или 2, это также было бы полезно.
Разъяснение: асинхронный процесс будет состоять в том, чтобы отсканировать сторонний веб-сайт и отправить уведомление об уведомлении исходному запрашивающему. Сторонний веб-сайт немного ненадежный и медленный, поэтому он будет обрабатываться как асинхронный процесс (встроено несколько попыток повторных попыток). Я также буду извлекать файлы с этого сайта и хранить их в S3.