@@ -8,6 +8,20 @@ import (
88
99const QUEUE core.Provide = "QUEUE"
1010
11+ func ForRoot (opt * Options ) core.Modules {
12+ return func (module core.Module ) core.Module {
13+ queueModule := module .New (core.NewModuleOptions {})
14+
15+ queueModule .NewProvider (core.ProviderOptions {
16+ Name : QUEUE ,
17+ Value : opt ,
18+ })
19+ queueModule .Export (QUEUE )
20+
21+ return queueModule
22+ }
23+ }
24+
1125// getQueueName generates a unique name for a queue provider.
1226//
1327// The name is in the form "<name>Queue".
@@ -18,13 +32,24 @@ func getQueueName(name string) core.Provide {
1832// Register registers a new queue module with the given name and options. The
1933// registered module creates a new queue with the given name and options, and
2034// exports the queue under the name "<name>Queue".
21- func Register (name string , opt * Options ) core.Modules {
35+ func Register (name string , opts ... * Options ) core.Modules {
36+ var option * Options
37+ if len (opts ) > 0 {
38+ option = opts [0 ]
39+ }
2240 return func (module core.Module ) core.Module {
41+ if option == nil {
42+ defaultOptions , ok := module .Ref (QUEUE ).(* Options )
43+ if ! ok || defaultOptions == nil {
44+ panic ("not config option for queue" )
45+ }
46+ option = defaultOptions
47+ }
2348 queueModule := module .New (core.NewModuleOptions {})
2449
2550 queueModule .NewProvider (core.ProviderOptions {
2651 Name : getQueueName (name ),
27- Value : New (name , opt ),
52+ Value : New (name , option ),
2853 })
2954 queueModule .Export (getQueueName (name ))
3055
0 commit comments