powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring - get long Process execution logs and status?
21 сообщений из 21, страница 1 из 1
Spring - get long Process execution logs and status?
    #39688980
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,

подскажите, как лучше и с помощью чего сделать следующее..
И вообще возможно ли, я думаю что да... Но как-то не слишком много опыта в обработке процессов...

Есть SpringBoot Web приложение. По REST Запускается процесс который может исполняться и 10 минут и час. Хочется в любой момент придти по определённому пути и получить актуальную информацию по всех запущенных процессах.

К примеру я запускаю вот так вот процесс

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
public String submit(String runCmd) throws IOException, InterruptedException {

        String processResult = "";

        ProcessBuilder builder = new ProcessBuilder();
        builder.command("sh", "-c", runCmd);
        builder.directory(new File(System.getProperty("user.home")));
        Process process = builder.start();
        StreamGobbler streamGobbler = new StreamGobbler(process.getInputStream(), System.out::println);
        Executors.newSingleThreadExecutor().submit(streamGobbler);
        int exitCode = process.waitFor();
        assert exitCode == 0;

        return processResult;
    }

    private static class StreamGobbler implements Runnable {
        private InputStream inputStream;
        private Consumer<String> consumer;

        public StreamGobbler(InputStream inputStream, Consumer<String> consumer) {
            this.inputStream = inputStream;
            this.consumer = consumer;
        }

        @Override
        public void run() {
            new BufferedReader(new InputStreamReader(inputStream)).lines().forEach(s -> {
                   System.out.println(s);
            });
        }
    }



Предположим что процесс работает 10 минут и каждые 10 секунд пишет что-то в консоль.
Хотелось бы вот каждый 10 секунд получать изменения...

Я конечно же могу это скомпоновать всё и сделать, но может есть какие-то схожие решения, библиотеки для таких вещей?

Буду благодарен за любую подсказку или совет...
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39688994
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,

ну дак используй websocket - отправляй когда угодно из какого угодно места и что угодно
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39688998
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,
Ты в логи не можешь вывести число каждые 10мин?
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689211
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя_webdev_,

ну дак используй websocket - отправляй когда угодно из какого угодно места и что угодно
- Насколько я понимаю, это то что мне надо. Или?
https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689212
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123_webdev_,
Ты в логи не можешь вывести число каждые 10мин?
))) Нет, это был пример, что я хочу сделать
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689213
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоесть приблизительный workflow.
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689219
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_Хочется в любой момент придти по определённому пути и получить актуальную информацию по всех запущенных процессах.
Вот это переведи и распиши на 3 абзаца.
Можно с картинками.
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689222
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_- Насколько я понимаю, это то что мне надо. Или?как вариант - использовать библиотеку из
https://suefk.roskazna.ru:8443/docs/web-socket-howto.html

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#websocket
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689228
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Вот это переведи и распиши на 3 абзаца.
Можно с картинками.

- Есть spring-boot web приложение.
- Приложение работает в докер контейнере
- /submit - приложение запускает из shell скрипт который будет исполняться минут 10 или 100
- shell script запустился - вернул нам PID процесса.
- запрос закончен, PID сохранили в БД
- Через минут 5 я хочу посмотреть состояние процесса, хочу прочитать то что он написал в логи
- /getAllRunningProcesses - получаю все запущенные процессы клиента (PIDs)
- выбираю PID и через REST Хочу подконнектится к процессу и читать в реальном времени всё то что он пишет в лог
- своеобразный netcat или LogsViewer только для процесса
- подконнектится к процессу через REST и слушать его

Через веб-сокеты я когда-то делал LogsViewer.

Вопрос:
Кто-то такое что-то похожее делал? Может есть какие-то готовые библиотеки для такого?
https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html - это то, что мне нужно?
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689238
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,
такое можно и простым ajax сделать

websocket - если есть желание отслеживать изменения в реальном времени.
тогда любое изменение может отображаться у клиента.
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689239
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяwebsocket - если есть желание отслеживать изменения в реальном времени.
тогда любое изменение может отображаться у клиента. - Да, знаю, так как делал.
Просто одно дело, когда что-то делаешь на сервере, а другое, когда отслеживаешь системные(запущенные) процессы.
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689252
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_Просто одно дело, когда что-то делаешь на сервере, а другое, когда отслеживаешь системные(запущенные) процессы.приложение работает на сервере, и кто ему мешает отслеживать все на сервере и передавать клиенту?
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689888
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,

Чо-то сложно как-то. Запускайте процесс прямо из джавы через ProcessBuilder
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689890
unregestered
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unregestered_webdev_,
Чо-то сложно как-то. Запускайте процесс прямо из джавы через ProcessBuilder
Чо-то я похоже не разобрался в сущности проблемы.
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39689897
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_выбираю PID и через REST Хочу подконнектится к процессу и читать в реальном времени всё то что он пишет в лог
Если 5 процессов пишут в лог, то можно без подключения к процессам просто смотреть лог в реальном времени.
Нужно чтобы в лог писали без буферизации.
Зачем вам pid тогда, непонятно.
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39690144
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,


Можно посмотреть в сторону Actuator.
Написать свой актуатор, который будет выводит нужные вам данные. :-)
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39690175
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
unregestered_webdev_,

Чо-то сложно как-то. Запускайте процесс прямо из джавы через ProcessBuilder - Сложного нет ничего. Просто хотелось поинтересоваться о библиотетеке, которая на вебсокетах работает и нет ли каких-то подводных камней - перед началом имплементации.
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39690176
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123_webdev_выбираю PID и через REST Хочу подконнектится к процессу и читать в реальном времени всё то что он пишет в лог
Если 5 процессов пишут в лог, то можно без подключения к процессам просто смотреть лог в реальном времени.
Нужно чтобы в лог писали без буферизации.
Зачем вам pid тогда, непонятно. - Каждый процесс запускается сам по себе, Важно различать их, а не смотреть общий лог.
Ну так, а как я буду знать какому пользователю принадлежит процесс без PID? Полозователь запускает процесс, я получаю пид созданного процесса. Отключаюсь (запрос завержился). Через 5 мин Хочу узнать статус и почитать логи. Как мне это сделать без PID?
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39690177
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul_webdev_,


Можно посмотреть в сторону Actuator.
Написать свой актуатор, который будет выводит нужные вам данные. :-) - Неплохая идея, спасибо!
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39690203
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_Petro123пропущено...

Если 5 процессов пишут в лог, то можно без подключения к процессам просто смотреть лог в реальном времени.
Нужно чтобы в лог писали без буферизации.
Зачем вам pid тогда, непонятно. - Каждый процесс запускается сам по себе, Важно различать их, а не смотреть общий лог.
Ну так, а как я буду знать какому пользователю принадлежит процесс без PID? Полозователь запускает процесс, я получаю пид созданного процесса. Отключаюсь (запрос завержился). Через 5 мин Хочу узнать статус и почитать логи. Как мне это сделать без PID?
Ну, может тебе и не подходит, но у меня так.
Есть soap server.
Там на каждое подключение свой экземпляр класса.
В логах:
[id user] [id thread] [context http get] время и само сообщение в лог
...
Рейтинг: 0 / 0
Spring - get long Process execution logs and status?
    #39690221
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123_webdev_пропущено...
- Каждый процесс запускается сам по себе, Важно различать их, а не смотреть общий лог.
Ну так, а как я буду знать какому пользователю принадлежит процесс без PID? Полозователь запускает процесс, я получаю пид созданного процесса. Отключаюсь (запрос завержился). Через 5 мин Хочу узнать статус и почитать логи. Как мне это сделать без PID?
Ну, может тебе и не подходит, но у меня так.
Есть soap server.
Там на каждое подключение свой экземпляр класса.
В логах:
[id user] [id thread] [context http get] время и само сообщение в лог
- понял.
Дело в том, что из программы я буду запускать spark-submit. Он создаёт драйвер и екзекюторы на кластере. Хотелось хотя бы минимальную информацию о запущенном процессе пользователю предоставлять. Думаю, что в моём случае пид лучше чем логи искать, так как их будет дофига. Пока что это всё немного в процессе активной разработки (kubernetes and spark-submit), и простых инструментов для такого отслеживания я не нашёл. Но это уже другой вопрос.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring - get long Process execution logs and status?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]