Я включил свой код, который был создан с использованием следующих ссылок:
Когда я запускаю код после нескольких секунд паузы, я получаю сообщение об ошибке в строке
conn, err := amqp.Dial(result)
, в котором говорится «время ожидания ввода-вывода»
package main
import (
"fmt"
"github.com/streadway/amqp"
"gopkg.in/yaml.v2"
"io/ioutil"
"log"
)
type Yaml struct {
Host string
Port string
Password string
Username string
}
func failOnError(err error, msg string) {
if err != nil {
log.Fatalf("%s: %s", msg, err)
}
}
func main(){
c := Yaml{}
yamlFile, err := ioutil.ReadFile("conf.yaml")
if err != nil {
log.Printf("yamlFile.Get err #%v ", err)
}
err = yaml.Unmarshal(yamlFile, &c)
result := fmt.Sprintf("%s%s%s%s%s%s%s", "amqp://", c.Username, ":", c.Password, "@", c.Host,"/")
conn, err := amqp.Dial(result)
failOnError(err, "Failed to connect to RabbitMQ")
defer conn.Close()
ch, err := conn.Channel()
failOnError(err, "Failed to open a channel")
defer ch.Close()
}
Мой файл yaml имеет следующую структуру:
host: "...."
port: 0000
password: "...."
username: "...."
У меня есть параметры соединения в файле yaml, и я вижу, что они правильно перенаправляются в структуру Yaml. Я оставил порт отключенным, в результате чего порт по умолчанию стал 5672. Я что-то здесь упустил?