Мне сложно понять, как архитектовать последнюю часть моей системы. В настоящее время я запускаю сервер Tomcat, у которого есть сервлет, который отвечает на запросы клиентов. Каждый запрос, в свою очередь, добавляет сообщение обработки в асинхронную очередь (я, вероятно, буду использовать JMS через Spring или, скорее, Amazon SQS).Каков наилучший способ непрерывной обработки асинхронной очереди в Java?
Последовательность событий такова:
отправляющая сторона:
1. Принять запрос клиента
2. Добавьте некоторые данные в БД, связанные с этим запросом с уникальным ID
3. Добавить объект сообщения, представляющий этот запрос в очередь сообщений
приемной стороне:
1. натянуть новый объект сообщения из очереди
2. Unwrap объект и захват некоторая информация с веб-сайта на основе информации, содержащейся в объекте msg.
3. Отправить оповещение по электронной почте
4. обновите мою строку БД (тот же уникальный идентификатор) с информацией, что операция была выполнена для этого запроса.
У меня есть трудное выяснение того, как правильно обращаться с принимающей стороной. С одной стороны, я могу создать простую java-программу, которую я запускаю из командной строки, которая выбирает каждый элемент в очереди и обрабатывает его. Это безопасно? Имеет ли смысл использовать эту программу в качестве другого потока внутри контейнера Tomcat? Я не хочу делать это последовательно, то есть принимающая сторона должна обрабатывать несколько объектов одновременно - используя несколько потоков. Я хочу, чтобы это всегда работало 24 часа в сутки.
Каковы некоторые варианты построения принимающей стороны?
Если кто-то заинтересован в том, что я, наконец, закончил делать. Я использовал SQS от Amazon и имел java-клиент (использует Spring Framework), который опросил очередь. Когда он находит msg, он обрабатывает его и возвращается в состояние ожидания. Я мог бы добавить Quartz threading, теперь я просто запускаю несколько процессов. – Ish
Я столкнулся с аналогичной проблемой. Я хотел бы знать, как реализован Java-клиент. Надеюсь, он не работает в бесконечном цикле и пулах для сообщения? –