0
Javaアプリケーションからファンアウト交換でメッセージを発行しています。私はJavaで複数のコンシューマーでメッセージを受け取ることができます。私はgolangアプリに2人の消費者を持っていますが、消費者の1人だけがメッセージを受信しています(公表されたメッセージの両方ではありません)。Golang Rabbit MQファンアウトExchange複数のコンシューマ
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
}
//第二消費者
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
}
私はウサギのMQのhttps://github.com/streadway/amqpライブラリを使用しています。チャネルタイプに