@@ -9,6 +9,8 @@ type RMQSubscriber struct {
9
9
connection * amqp.Connection
10
10
channel * amqp.Channel
11
11
queueName string
12
+
13
+ Messages chan interface {}
12
14
}
13
15
14
16
func NewSubscriber () (* RMQSubscriber , error ) {
@@ -36,15 +38,17 @@ func NewSubscriber() (*RMQSubscriber, error) {
36
38
return nil , err
37
39
}
38
40
41
+ msgs := make (chan interface {})
42
+
39
43
return & RMQSubscriber {
40
44
connection : conn ,
41
45
channel : ch ,
42
46
queueName : queueName ,
47
+ Messages : msgs ,
43
48
}, nil
44
49
}
45
50
46
51
func (r * RMQSubscriber ) Start () chan bool {
47
- // Start consuming messages
48
52
msgs , err := r .channel .Consume (
49
53
r .queueName ,
50
54
"" ,
@@ -61,42 +65,23 @@ func (r *RMQSubscriber) Start() chan bool {
61
65
done := make (chan bool )
62
66
go func () {
63
67
for d := range msgs {
64
- // Process message
65
- // Placeholder: Print message to console
66
- println ("Received message: " , string (d .Body ))
68
+ if r .Messages == nil {
69
+ close (done )
70
+ break
71
+ }
72
+ r .Messages <- d .Body
67
73
}
68
- done <- true
69
74
}()
70
75
return done
71
76
}
72
77
78
+ func (r * RMQSubscriber ) Listen () <- chan interface {} {
79
+ return r .Messages
80
+ }
81
+
73
82
func (r * RMQSubscriber ) Detach () error {
74
83
if err := r .channel .Close (); err != nil {
75
84
return err
76
85
}
77
86
return r .connection .Close ()
78
87
}
79
-
80
- func (r * RMQSubscriber ) Listen () <- chan interface {} {
81
- msgs , err := r .channel .Consume (
82
- r .queueName ,
83
- "" ,
84
- config .Read ().RabbitMQ .AutoAck ,
85
- config .Read ().RabbitMQ .Exclusive ,
86
- false ,
87
- config .Read ().RabbitMQ .NoWait ,
88
- nil ,
89
- )
90
- if err != nil {
91
- panic (err )
92
- }
93
-
94
- output := make (chan interface {})
95
- go func () {
96
- for d := range msgs {
97
- output <- d .Body
98
- }
99
- close (output )
100
- }()
101
- return output
102
- }
0 commit comments