Как работают real time приложения в Java?

Доброго времени суток. Хотел бы узнать, как на реальных Java проектах решаются следующего рода задачи:

1) Есть API, нужно асинхронно обрабатывать все прилетающие сообщения.
2) Есть набор задач, которые нужно проделывать постоянно, повторяя каждую минуту.

В проекте, в котором я работаю пишем на php. 1 пункт решается с помощью сервера очередей RabbitMQ, очереди которого слушают одновременно кучи косьюмеров, т.е. висят воркера и обрабатывают все это.
Второй пункт решается так же запуском консольных тасок, которые крутятся в бесконечном цикле.
Управление воркерами идет с помощью supervisor, если необходимо добавить скорости, добавляется n инстансов воркера.

Задачи взял просто ради примера, интересует именно концепция решения подобных задач в Java. Проще говоря, как java работают real time приложения, по такому же принципу создаются разные воркера и запускаются по отдельности или как-то иначе. За счет чего увеличивают производительность, это так же кучи инстансов или что-то с потоками связанное? И как делаются вечно работающие приложения, while (true) {...} и вперед или есть более изящные решения?

Заранее благодарен за ответы.
  • Вопрос задан
  • 1485 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Тут все зависит от архитектора и архитектуры.
Собственно, все практически тоже самое, берется очередь, и на нее сажаются воркеры.
Сами очереди есть в любом JEE контейнере. Также в любом JEE контейнере можно запустить нужное количество воркеров. Т.е. это вот все уже заложено в саму спецификацию JEE, также есть куча разных реализаций как очередей, так и контейнеров, которые поддерживают единый API взаимодействия. Есть jboss, glassfish и еще добрый десяток реализаций. Это так сказать традиционный путь. Здесь мы получаем единый механизм управления, деплоя и взаимодействия в рамках экосистемы.
Также можно все тоже самое реализовать и в связке с rabbitMQ и просто плодить процессы в качестве воркеров. А можно и из контейнера подцепиться к тому же самому rabbitMQ.

Не знаю, получилось ли ответить на ваш вопрос.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ActiveMQ - очереди
Spring @Scheduled - выполнение задач по расписанию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы