Simple Alerting API
This project is a simple API for a dynamic, reactive alerting system (minus the notification component). It consists of four different modules that comprise the overall functionality of the project.
- amqp
- api
- batch
- persistence
Getting Started
- Clone the project.
git clone git@github.com:Dark-Alex-17/alerting-api.git - Open the
alerting-apifolder with IntelliJ. Use auto-import for a Gradle project.
Running the API
Start the persistence tier
The persistence tier will start up the in-memory H2 database. Once started, Flyway will populate the database with the alerting schema and test data, and also the default Quartz schema.
Once H2 is up and running, a TCP server is started on port 9091 so other applications can use the database.
The H2 browser console is available at http://localhost:8081/h2-console
./gradlew persistence:bootRun
Start the batch worker
The batch worker is what picks up messages from RabbitMQ and then schedules, and executes Quartz jobs.
The worker also creates the appropriate exchanges, queues, bindings, and all consumers.
./gradlew batch:bootRun
Start the Alerting API
The API is how users provision alerts and recipients, and all data is persisted to the H2 database.
Additionally, all operations send a message to RabbitMQ to provision and schedule Quartz jobs in the batch worker.
The API is available at http://localhost:8080/api/alerting/v1/
API documentation is available here
./gradlew api:bootRun
Built With
- Kotlin - Primary language
- Spring Boot - Web framework
- Spring Data - JPA data access abstraction
- Spring AMQP - Asynchronous message communication library
- Apache Commons - Boilerplate code library
- Lombok - Boilerplate Java code generator
- Hibernate - Persistence framework
- Quartz Scheduler - Job scheduling and execution framework
- H2 Database - In-memory prototype database
- Flyway - Database Version Control
- RabbitMQ - Asynchronous Message Broker
- Gradle - Dependency management