linstrom/outgoingEventQueue/queue.go

22 lines
1.1 KiB
Go
Raw Normal View History

2024-09-12 14:57:53 +00:00
package outgoingeventqueue
2024-09-13 13:02:32 +00:00
// TODO: Implement me
/*
Queue for controlled distribution of outgoing events, such as note creations, deletions or updates
Also has to manage the case where an instance can't be reached or where Linstrom has to shut down
In case of a shutdown, it has to store all remaining tasks in the db to try again later after the next boot
Should preferably also be able to tell when a server is just gone and stop bothering about it
2024-09-13 13:22:11 +00:00
Implementation idea: New job gets send to queue (via function call). Queue then launches a new goroutine for that job
2024-09-13 14:58:22 +00:00
Goroutine then launches multiple new goroutines, one per targeted inbox, filtered by blocked targets
2024-09-13 13:22:11 +00:00
Each of those will wait for a ticker or a stop signal
On each ticker they'll try to deliver the payload to the target inbox
If a stop signal comes in, push the payload and goal into the db to pick up again later
On stop or sucessful delivery, exit the goroutine
2024-09-13 14:58:22 +00:00
Stop can also be used to suspend outbound traffic to another instance to help reduce the load on them
TODO: Think of ways to make this more configurable for how data is being sent how fast
2024-09-13 13:02:32 +00:00
*/