-
Notifications
You must be signed in to change notification settings - Fork 1
/
declare.go
91 lines (83 loc) · 1.58 KB
/
declare.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package amqp
import "github.com/Ja7ad/amqp/types"
func declareQueue(chanManager *channel, queue *types.Queue) error {
if !queue.Declare {
return nil
}
if queue.Passive {
_, err := chanManager.queueDeclarePassiveSafe(
queue.Name,
queue.Durable,
queue.AutoDelete,
queue.Exclusive,
queue.NoWait,
queue.Arguments,
)
if err != nil {
return err
}
return nil
}
_, err := chanManager.queueDeclareSafe(
queue.Name,
queue.Durable,
queue.AutoDelete,
queue.Exclusive,
queue.NoWait,
queue.Arguments,
)
if err != nil {
return err
}
return nil
}
func declareExchange(chanManager *channel, exchange *types.Exchange) error {
if !exchange.Declare {
return nil
}
if exchange.Passive {
err := chanManager.exchangeDeclarePassiveSafe(
exchange.Name,
exchange.Kind.String(),
exchange.Durable,
exchange.AutoDelete,
exchange.Internal,
exchange.NoWait,
exchange.Arguments,
)
if err != nil {
return err
}
return nil
}
err := chanManager.exchangeDeclareSafe(
exchange.Name,
exchange.Kind.String(),
exchange.Durable,
exchange.AutoDelete,
exchange.Internal,
exchange.NoWait,
exchange.Arguments,
)
if err != nil {
return err
}
return nil
}
func declareBindings(chanManager *channel, queueName, exchangeName string, routingKeys []*types.RoutingKey, consumer *types.Consumer) error {
for _, rk := range routingKeys {
if !rk.Declare {
continue
}
if err := chanManager.queueBindSafe(
queueName,
rk.Key,
exchangeName,
consumer.NoWait,
consumer.Arguments,
); err != nil {
return err
}
}
return nil
}