I am publishing messages in fanout exchange from Java application. I am able to receive message in multiple consumer in Java. I have 2 consumers in golang app but only one of the consumer (alternatively ) is receiving the message (Not both of them for a published message).
func HandleMessageFanout1(){
conn := system.EltropyAppContext.RabbitMQConn
channel, err := conn.Channel()
if(err!=nil){
log.Println(err)
}
//forever := make(chan bool)
deliveries,err := channel.Consume(
"example.queue", //queue
"qw",
true,
false,
false,
false,
nil)
if(err!=nil){
log.Println(err)
}
go func() {
for d := range deliveries {
log.Printf("Message recived in fanout 1")
log.Printf("Received a message: %s", d.Body)
}
}()
//<-forever
}
//2nd Consumer
package consumer
import (
"github.com/eltropy/shehnai/backend/golang/common-packages/system"
log "github.com/Sirupsen/logrus"
)
func HandleMessageFanout2() {
conn := system.EltropyAppContext.RabbitMQConn
channel, err := conn.Channel()
if (err!=nil) {
log.Println(err)
}
//forever := make(chan bool)
deliveries, err := channel.Consume(
"example.queue", //queue
"q2",
true,
false,
false,
false,
nil)
if (err!=nil) {
log.Println(err)
}
go func() {
for d := range deliveries {
log.Printf("Message recived in fanout 2")
log.Printf("Received a message: %s", d.Body)
}
}()
//<-forever
}
I am using https://github.com/streadway/amqp library for rabbit mq.