21 lines
1.1 KiB
Go
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
|
|
*/
|