我在Java应用程序的扇出交换中发布消息。我能够在Java中的多个消费者中接收消息。我在golang应用程序中有2个消费者,但只有一个消费者(或者)正在接收消息(对于已发布的消息,它们都不是。)
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
}
我正在使用https://github.com/streadway/amqp库用于兔子mq。
答案 0 :(得分:0)
在频道类型上,在发布之前,声明如下的交换:
err = channel.ExchangeDeclare(
"example.queue", // name
"fanout", // type
true, // durable
false, // auto-deleted
false, // internal
false, // no-wait
nil, // arguments
)