RabbitMq 消息队列笔记 > Golang 操作实现RabbitMq消费者和客户端
go 发送消息到RabbitMq

下面是golang 发送消息到 rabbitmq 代码

package main

import (
	"log"
	"github.com/streadway/amqp"
)

func failOnError(err error, msg string) {
	if err != nil {
		log.Fatalf("%s: %s", msg, err)
	}
}

func main() {
	conn, err := amqp.Dial("amqp://guest@guest@localhost:5672/")
	failOnError(err, "Failed to connect to RabbitMQ")
	defer conn.Close()

	ch, err := conn.Channel()
	failOnError(err, "Failed to open a channel")
	defer ch.Close()

	q, err := ch.QueueDeclare(
		"hello", // name
		false,   // durable
		false,   // delete when unused
		false,   // exclusive
		false,   // no-wait
		nil,     // arguments
	)
	failOnError(err, "Failed to declare a queue")

	body := "Hello World!"
	err = ch.Publish(
		"",     // exchange
		q.Name, // routing key
		false,  // mandatory
		false,  // immediate
		amqp.Publishing{
			ContentType: "text/plain",
			Body:        []byte(body),
		})
	log.Printf(" [x] Sent %s", body)
	failOnError(err, "Failed to publish a message")
}


遇到得问题

1. 创建了 一个   /test 得vhost ,同时给这个分配权限到 test 用户使用

conn, err := amqp.Dial("amqp://test@test@localhost:5672/test")

使用上面地址连接提示授权失败

原因是 ampq 连接地址有问题 正确得地址是

conn, err := amqp.Dial("amqp://test@test@localhost:5672//test")