-
Notifications
You must be signed in to change notification settings - Fork 37
/
queues.go
51 lines (46 loc) · 1.31 KB
/
queues.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package mq
import "golang.org/x/exp/slices"
const (
// The queue used by the API to insert new tasks into
QUEUE_PENDING = "pending"
// The queue used by workers to notify the coordinator
// that a task has began processing
QUEUE_STARTED = "started"
// The queue used by workers to send tasks to when
// a task completes successfully
QUEUE_COMPLETED = "completed"
// The queue used by workers to send tasks to when an error
// occurs in processing
QUEUE_ERROR = "error"
// The default queue for tasks
QUEUE_DEFAULT = "default"
// The queue used by workers to periodically
// notify the coordinator about their aliveness
QUEUE_HEARBEAT = "hearbeat"
// The queue used by for job creation
// and job-related state changes (e.g. cancellation)
QUEUE_JOBS = "jobs"
// The prefix used for queues that
// are exclusive
QUEUE_EXCLUSIVE_PREFIX = "x-"
)
type QueueInfo struct {
Name string `json:"name"`
Size int `json:"size"`
Subscribers int `json:"subscribers"`
Unacked int `json:"unacked"`
}
func IsCoordinatorQueue(qname string) bool {
coordQueues := []string{
QUEUE_PENDING,
QUEUE_STARTED,
QUEUE_COMPLETED,
QUEUE_ERROR,
QUEUE_HEARBEAT,
QUEUE_JOBS,
}
return slices.Contains(coordQueues, qname)
}
func IsWorkerQueue(qname string) bool {
return !IsCoordinatorQueue(qname)
}