-
Notifications
You must be signed in to change notification settings - Fork 0
/
manager.go
45 lines (35 loc) · 1.37 KB
/
manager.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
package queue
import (
"github.com/gookit/color"
"github.com/pkg/errors"
"gopkg.in/go-mixed/framework.v1/contracts/queue"
"gopkg.in/go-mixed/framework.v1/facades/config"
"gopkg.in/go-mixed/framework.v1/support/manager"
)
type QueueManager struct {
manager.Manager[queue.IBroker]
}
func NewQueueManager() *QueueManager {
m := &QueueManager{}
m.Manager = manager.MakeManager[queue.IBroker](m.DefaultConnectionName, m.makeConnection)
return m
}
func (m *QueueManager) Connection(connectionName string) queue.IBroker {
return m.MustDriver(connectionName)
}
func (m *QueueManager) DefaultConnectionName() string {
return config.GetString("queue.default")
}
func (m *QueueManager) makeConnection(connectionName string) (queue.IBroker, error) {
driver := config.GetString("queue.connections."+connectionName+".driver", "")
if m.HasCustomCreator(driver) {
instance, err := m.CallCustomCreator(driver, connectionName)
if err != nil {
color.Redf("[Queue] Initialize queue driver \"%s.%s\" error: %v\n", connectionName, driver, err)
return nil, errors.Errorf("[Cache] Initialize queue \"%s.%s\" error: %v\n", connectionName, driver, err)
}
return instance.(queue.IBroker), nil
}
color.Redf("[Queue] queue driver \"%s.%s\" is not defined.\n", connectionName, driver)
return nil, errors.Errorf("[Queue] queue driver \"%s.%s\" is not defined.\n", connectionName, driver)
}