我正在尝试将消息发送到特定的路由键,但它没有收到。当我从仪表板发送消息时,会收到消息。我找不到这段代码有什么问题。请帮助。
func sendIndividualMessageToRabbitMq(practiceExchange, myUserId string, reader *bufio.Reader) {
conn, err := connectToRabbitMq()
if err != nil {
log.Fatal("Could not connect to chat server")
}
defer conn.Close()
fmt.Print("Enter recipient ID: ")
recipientID, _ := reader.ReadString('\n')
recipientID = strings.TrimSpace(recipientID)
targetQueue := practiceExchange + recipientID
println("TargetQueue: ", targetQueue)
println("Exchange: ", practiceExchange)
ch, err := conn.Channel()
failOnError(err, "Error in creating channel")
defer ch.Close()
err = ch.ExchangeDeclare(
practiceExchange, // exchange name
"direct", // kind
true, // durable
false,
false,
false,
nil,
)
failOnError(err, "Error creating exchange")
fmt.Print("Enter message: ")
messageText, _ := reader.ReadString('\n')
messageText = strings.TrimSpace(messageText)
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
defer cancel()
log.Printf("Sending message with routing key: %s, message text: %s", targetQueue, messageText)
err = ch.PublishWithContext(ctx,
practiceExchange, // exchange
targetQueue, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
DeliveryMode: amqp.Persistent,
ContentType: "text/plain",
Body: []byte(messageText),
MessageId: uuid.NewString(),
Timestamp: time.Now(),
UserId: myUserId,
})
failOnError(err, "Failed to send message")
log.Printf(" [x] Sent %s", messageText)
}
自过去 3 天以来,我尝试了所有方法。我一直在破坏我的大脑,但没有产量。该消息至少应出现在 RMQ 仪表板中,但没有未确认的消息。我不知道这些消息的去向,最重要的是,它们没有出现在接收器中。