Найти в Дзене

Запуск Telegram бота как службы Windows

У одного из клиентов была задача запустить Telegram бота локально на своем ноутбуке на ОС Windows. Есть несколько вариантов как это можно сделать: 1. Вручную через командную строку каждый раз запускать .jar файл 2. Через среду разработки (IDE) 3. Запускать как службу Windows Первые два варианта сразу НЕТ. Запуск должен быть максимально простым и прозрачным для клиента. Я пошел изучать вопрос и нашел отличную open source утилиту WinSW (Windows Service Wrapper), которая позволяет установить свою службу на ОС Windows. Чтобы разобраться как это все работает пришлось даже расчехлять ноутбук на Windows, потому что с виртуалками на Mac возиться не хотелось. Итак, для работы с утилитой WinSW необходимо всего три действия: 1. Настроить конфигурацию для запуска 2. Установить службу 3. Запустить службу ❗️Утилита не требует отдельной установки на ПК, вся работа происходит в командной строке ❗️Для запуска бота на Java необходима установка на ПК JRE (Java Runtime Environment) - Среда выполнения д
Оглавление

У одного из клиентов была задача запустить Telegram бота локально на своем ноутбуке на ОС Windows.

Есть несколько вариантов как это можно сделать:

1. Вручную через командную строку каждый раз запускать .jar файл

2. Через среду разработки (IDE)

3. Запускать как службу Windows

Первые два варианта сразу НЕТ. Запуск должен быть максимально простым и прозрачным для клиента. Я пошел изучать вопрос и нашел отличную open source утилиту WinSW (Windows Service Wrapper), которая позволяет установить свою службу на ОС Windows. Чтобы разобраться как это все работает пришлось даже расчехлять ноутбук на Windows, потому что с виртуалками на Mac возиться не хотелось.

Итак, для работы с утилитой WinSW необходимо всего три действия:

1. Настроить конфигурацию для запуска

2. Установить службу

3. Запустить службу

❗️Утилита не требует отдельной установки на ПК, вся работа происходит в командной строке
❗️Для запуска бота на Java необходима установка на ПК JRE (Java Runtime Environment) - Среда выполнения для Java

Конфигурация

Конфигурационный файл представляет из себя описание службы в формате .xml:

Конфигурация службы
Конфигурация службы

Ссылка на конфигурационный файл (GitHub Gist) 🔗 winSW-config.xml

Приведу детальное описание полей:

  • id: ID службы. Должно быть уникальным в рамках системы Windows
  • name: Имя службы. Его можно будет увидеть в списке всех служб Windows в соответствующем разделе
  • description: Описание службы
  • env name/value: Имя/значение переменных, которые будут использоваться непосредственно в коде программы. В нашем примере bot_name - переменная для указания @userName бота, bot_token - переменная для указания token бота
  • executable: Команда, которая будет выполняться при запуске службы
  • arguments: Аргументы для выполнения команды

Установка и запуск службы

Чтобы установить службу, в командной строке необходимо выполнить команду WinSW.NET4.exe install и дождаться ее выполнения. После установки мы получим сообщение Service 'имя службы' was installed successfully.

Установка службы с помощью утилиты WinSW
Установка службы с помощью утилиты WinSW

Далее нам необходимо проверить наличие нашей службы в списке всех служб Windows

После установки наш бот появляется в списке всех служб Windows
После установки наш бот появляется в списке всех служб Windows

Для запуска службы можно воспользоваться кнопкой в панели управления. Также там есть кнопки для остановки/приостановки/перезапуска службы.

Для работы со службой из командной строки можно воспользоваться следующими командами:

1. WinSW.NET4.exe install - установить службу

2. WinSW.NET4.exe uninstall - удалить службу

3. WinSW.NET4.exe stop - остановить службу

4. WinSW.NET4.exe start - запустить службу

5. WinSW.NET4.exe restart - перезапустить службу (stop + start)

❗️Если необходимо запустить бота с другими настройками, то достаточно редактировать конфигурационный файл и перезапустить службу

Готовое решение

В итоге готовое решение для клиента содержало папку, в которой:

- .jar фай с ботом

- Конфигурационный .xml файл службы

- Утилита WinSW

Готовое решение: .jar файл с ботом, конфигурационный файл, утилита WinSW
Готовое решение: .jar файл с ботом, конфигурационный файл, утилита WinSW

Полезные материалы:

📰 Статья на Baeldung: Spring Boot Application as a Service

📺 Yotube: How to run Spring Boot Application as a Windows Service | WinSW

💾 GitHub: Скачать утилиту WinSW