-
Notifications
You must be signed in to change notification settings - Fork 0
/
MessageQueueFactory.go
47 lines (38 loc) · 1.21 KB
/
MessageQueueFactory.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
package build
import (
cconf "github.com/pip-services3-go/pip-services3-commons-go/config"
cref "github.com/pip-services3-go/pip-services3-commons-go/refer"
"github.com/pip-services3-go/pip-services3-components-go/build"
"github.com/pip-services3-go/pip-services3-messaging-go/queues"
)
// MessageQueueFactory are creates MemoryMessageQueue components by their descriptors.
// Name of created message queue is taken from its descriptor.
//
// See Factory
// See MemoryMessageQueue
type MessageQueueFactory struct {
build.Factory
config *cconf.ConfigParams
references cref.IReferences
}
// NewMessageQueueFactory method are create a new instance of the factory.
func NewMessageQueueFactory() *MessageQueueFactory {
c := MessageQueueFactory{}
memoryQueueDescriptor := cref.NewDescriptor("pip-services", "message-queue", "memory", "*", "1.0")
c.Register(memoryQueueDescriptor, func(locator interface{}) interface{} {
name := ""
descriptor, ok := locator.(*cref.Descriptor)
if ok {
name = descriptor.Name()
}
queue := queues.NewMemoryMessageQueue(name)
if c.config != nil {
queue.Configure(c.config)
}
if c.references != nil {
queue.SetReferences(c.references)
}
return queue
})
return &c
}