This is a small app responsible for sending email alerts when there are changes detected to endpoint web services (subscriptions).
Scheduling is handled by Quartz plugin in the app. It works like RSS - it checks the JSON service and reads the results and then compares that with the previously stored check and if there are new records, it triggers an email. Relies on records being sorted by date loaded. Works with any endpoint that can return date-sorted JSON output.
The custom dataSource configuration is no longer required from this version. Use the standard:
dataSource:
url: jdbc:mysql://localhost/alerts
username: alerts_user
password: password
driverClassName: com.mysql.cj.jdbc.Driver
dialect: org.hibernate.dialect.MySQL8Dialect
The application continues to use this optional external config file:
spring:
config:
import: "optional:file:/data/alerts/config/alerts-config.yml"
To align with the Grails 6 initialization process, the Grails externalConfig plugin has been removed. All properties previously defined in alerts-config.properties have been migrated to alerts-config.yml and are now loaded exclusively through Spring using SPRING_CONFIG_ADDITIONAL_LOCATION.
Spring can also load this external configuration via an environment variable, allowing you to specify your own file, for example:
SPRING_CONFIG_ADDITIONAL_LOCATION=file:/data/alerts/config/alerts-config.yml
If neither the import nor the environment variable is provided, Spring-managed components will not see the required configuration and may fall back to defaults (for example, H2 or Quartz RAMJobStore).
Go folder ./docker, run docker-compose up
Docker-compose runs MySql 8.1 on 3306, smtp4dev on 3000, 2525
What the docker-compose does:
- Install MySql
- Log in as root
create user 'alerts_user'@'localhost' identified as 'alerts_user';grant all privileges on *.* to 'alerts_user'@'localhost';create database alerts- Create /data/alerts/config/alerts-config.yml
- Use the template in ala-install to get the necessary values
Run smtp4dev via Docker:
docker run -p 3000:80 -p 2525:25 -d --name smtpdev rnwood/smtp4dev
Emails will be sent on SMTP port 2525 (configure sending emails via mail.enabled=true, grails.mail.port=2525 and grails.mail.server=localhost. Note: emails will not be delivered externally so you don't have to worry about spamming users.
You can view all sent emails via the smtp4dev UI on http://localhost:3000/, inlcuding HTML emails which are nicely displayed.
Change logs: Liquibase were introduced to manage DB changes Spring uses /data/alerts/config/alerts-config.yaml as default external config file
Change logs
DB schema update:
ALTER TABLE alerts.query_result MODIFY logs TEXT NULL;
No DB changes
Apply new templates for alerts
Database update: Check release/4.4.0-release.sql