我正在通过在GoLang中构建一个小应用程序来学习RabbitMQ-下面是这个示例:https://www.rabbitmq.com/tutorials/tutorial-one-go.html。我的项目具有以下结构:
project
└───cmd
│ └───api
│ │ main.go
│ └───internal
│ │ rabbitmq.go
在cmd/internal/rabbitmq.go
中,我有下面的代码- (错误用) 删除:
import (
...
amqp "github.com/rabbitmq/amqp091-go"
)
func NewRabbitMQ() (*RabbitMQ, error) {
// Initialise connection to RabbitMQ
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
// Initialise Channel
ch, err := conn.Channel()
// Initialise Queue
q, err := ch.QueueDeclare(
"hello", // name
false, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
// Set Context
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
body := "Hello World!"
err = ch.PublishWithContext( // errors here
ctx, // context
"", // exchange
q.Name, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
ContentType: "text/plain",
Body: []byte(body),
})
return &RabbitMQ{}, nil
}
就我所知,从文档中,这是它应该如何实现的,所以我不知道为什么它是错误的。
我试着在谷歌上寻找这个问题的帮助,但是没有用。我用的是Go 1.19,可能是这个问题吧?
1条答案
按热度按时间k5ifujac1#
感谢@oakad,这是一个简单的修复!问题是我使用的RabbitMQ版本是一个旧的版本,所以我只需要将我的
go.mod
从:收件人: