GridMonitor is a GridSuite product composed of a frontend and a multi-module Java backend. It schedules, orchestrates, executes, and monitors calculation processes on the electrical grid, such as an N-k security analysis.
The system exposes a REST API to the frontend, delegates calculations to asynchronous workers through RabbitMQ, and persists execution state in PostgreSQL.
| Module | Description | Repository |
|---|---|---|
gridmonitor-app |
GridMonitor frontend application | gridsuite/gridmonitor-app |
monitor-core |
GridMonitor backend monorepo | gridsuite/monitor-core |
monitor-commons |
Shared DTOs, contracts, and common types | Part of monitor-core |
monitor-server |
Backend-for-frontend and calculation launch through workers | Part of monitor-core |
monitor-worker-server |
Worker that executes calculations | Part of monitor-core |
monitor-notification-server |
GridMonitor notification service | gridsuite/monitor-notification-server |
The system uses Spring Cloud Stream with the RabbitMQ binder.
| Direction | Module | Binding | Exchange (destination) | Group |
|---|---|---|---|---|
| Publication | monitor-server |
publishRun${worker.process}-out-0 |
monitor.process.${worker.process}.run |
- |
| Publication | monitor-server |
publishMonitorUpdate-out-0 |
monitor.update |
- |
| Consumption | monitor-server |
consumeMonitorWorkerUpdate-in-0 |
monitor.worker.update |
monitorWorkerUpdateGroup |
| Consumption | monitor-worker-server |
consumeRun-in-0 |
monitor.process.${worker.process}.run |
process${worker.process}RunGroup |
| Publication | monitor-worker-server |
publishMonitorWorkerUpdate-out-0 |
monitor.worker.update |
- |
The worker.process property specializes each worker instance for one process type, such as securityanalysis. Multiple workers can therefore be deployed in parallel for different process types.