027261793f
Certain SMTP hosts limit the total number of messages that can be sent within a window, for instance, X / 24 hours. The concurrency and message rate controls can only limit that to a max of 1 messages / second, without a global cap. This commit introduces a simple sliding window rate limit feature that counts the number of messages sent in a specific window, and upon reaching that limit, waits for the window to reset before any more messages are pushed out globally across any number of campaigns. Context: https://github.com/knadh/listmonk/issues/119
20 lines
510 B
Go
20 lines
510 B
Go
package migrations
|
|
|
|
import (
|
|
"github.com/jmoiron/sqlx"
|
|
"github.com/knadh/koanf"
|
|
"github.com/knadh/stuffbin"
|
|
)
|
|
|
|
// V0_9_0 performs the DB migrations for v.0.9.0.
|
|
func V0_9_0(db *sqlx.DB, fs stuffbin.FileSystem, ko *koanf.Koanf) error {
|
|
_, err := db.Exec(`
|
|
INSERT INTO settings (key, value) VALUES
|
|
('app.lang', '"en"'),
|
|
('app.message_sliding_window', 'false'),
|
|
('app.message_sliding_window_duration', '"1h"'),
|
|
('app.message_sliding_window_rate', '10000')
|
|
ON CONFLICT DO NOTHING;
|
|
`)
|
|
return err
|
|
}
|