我刚刚开始阅读有关RabbitMQ
的内容,并且试图在for循环中发送大量消息。问题在于它根本不起作用。
package main
import (
"fmt"
"github.com/streadway/amqp"
"strconv"
)
func main() {
var connectionString = "amqp://guest:guest@localhost:5672/"
conn, _ := amqp.Dial(connectionString)
defer conn.Close()
ch, _ := conn.Channel()
defer ch.Close()
q, _ := ch.QueueDeclare(
"user_actions", // name
true, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
for i := 0; i < 10000; i++ {
body := "Hello from Go! " + strconv.Itoa(i)
ch.Publish(
"", // exchange
"hello", // routing key
false, // mandatory
false, // immediate
amqp.Publishing {
ContentType: "text/plain",
Body: []byte(body),
})
fmt.Println("Sent: "+body)
}
}
我什至尝试减少迭代次数,甚至尝试在循环外发送消息,但这是行不通的。我在做什么错了?
答案 0 :(得分:3)
提供的代码看起来不错,除了您使用的是默认交换并提供与队列名称不同的路由名称。
您可能想使用队列名称作为路由名称。尝试在hello
函数中将user_actions
替换为ch.Publish
。