linstrom/outgoingEventQueue/queue.go
2024-09-13 16:58:22 +02:00

21 lines
1.1 KiB
Go

package outgoingeventqueue
// 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
Implementation idea: New job gets send to queue (via function call). Queue then launches a new goroutine for that job
Goroutine then launches multiple new goroutines, one per targeted inbox, filtered by blocked targets
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
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
*/