# Как Локальный агент отслеживает задания печати

## Назначение

Описание механизма отслеживания заданий печати Локальным агентом мониторинга на рабочих станциях с локально подключёнными устройствами.

---

## Кратко

**Локальный агент** (внутреннее техническое название службы — Job Tracking Monitor, `PrintumJTMS`) — Windows-служба, устанавливаемая на компьютер пользователя или сервер печати. Её задача — отслеживать локальную очередь печати и отправлять информацию о заданиях на бэкенд Принтум.

## Основная задача

Локальный агент:

- отслеживает задания печати в очереди Windows;
- определяет момент завершения печати;
- отправляет события с данными задания на бэкенд.

## Как работает мониторинг очереди

Служба работает в фоне и постоянно опрашивает очередь печати Windows с интервалом **60 мс**. Отслеживаемые статусы заданий:

- `Printed` — задание напечатано;
- `Retained` — задание удержано в очереди;
- `Completed` — задание завершено.

## Как отправляются данные

Данные отправляются на бэкенд по **TCP**. Доставка сообщений **не гарантирована**: при проблемах со связью часть событий может быть потеряна без возможности восстановления.

## Потенциальные проблемы

### Потеря событий при нестабильном соединении

Если в момент отправки данных связь с бэкендом прервалась, событие теряется. Механизма повторной отправки нет.

### Быстрое удаление задания из очереди

Если задание исчезает из очереди быстрее, чем Локальный агент успевает его опросить (между итерациями по 60 мс), нужный статус может не зафиксироваться.

## Логи

Логи Локального агента записываются в стандартный журнал событий Windows:

```

Просмотр событий → Журналы Windows → Приложение
```

Код события: `101`

Открыть быстро:

```
eventvwr
```

## Установка

Варианты установки:

- MSI-установщик + XML-файл конфигурации;
- скрипты `install.bat` / `uninstall.bat`.

### Основные команды установки

```
msiexec /i printum_installer.msi /qn
```

```
Printum.JobTracking.WindowsService.exe --install
```

```
net start PrintumJTMS
```

### Основные команды удаления

```
net stop PrintumJTMS
```

```
Printum.JobTracking.WindowsService.exe --uninstall
```

```
msiexec /x printum_installer.msi /qn
```

## Что важно помнить

- Локальный агент работает как Windows-служба (`PrintumJTMS`).
- Доставка TCP-сообщений не гарантируется.
- Слишком быстрое удаление заданий из очереди может приводить к пропуску событий.
- Логи пишутся в стандартный журнал Windows (событие 101).

## Связанные страницы

- [Как работают локальные устройства](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/kak-rabotaiut-lokalnye-ustroistva)
- [Процессы в Мониторинге](http://wiki.printum.io/books/1-arxitektura-i-koncepcii/page/processy-v-monitoringe)