RabbitMQ Producer陷入了golang

时间:2017-11-01 13:42:15

标签: go rabbitmq

我是golang和rabbitmq的新手,我写过一个像这样的简单制作人

package main

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

func main() {
    server()
}

func server() {
    conn, ch, q := getQueue()
    defer conn.Close()
    defer ch.Close()

    msg := amqp.Publishing{
        ContentType: "text/plain",
        Body:        []byte("Hello RabbitMQ"),
    }

    ch.Publish("", q.Name, false, false, msg)
}

func getQueue() (*amqp.Connection, *amqp.Channel, *amqp.Queue) {
    conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
    failOnError(err, "Failed to connect to RabbitMQ")
    ch, err := conn.Channel()
    failOnError(err, "Failed to open a channel")
    q, err := ch.QueueDeclare("hello",
        false, //durable bool,
        false, //autoDelete bool,
        false, //exclusive bool,
        false,
        nil)
    failOnError(err, "Failed to declare queue")
    return conn, ch, &q
}

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

当我运行它时它不会退出niether它是否会抛出任何错误消息。在RabbitMQ管理控制台中,我可以看到队列,但其中没有数据,只显示NaN。

1 个答案:

答案 0 :(得分:1)

您的设置可能存在问题。我遇到了类似的问题,尝试使用不同的Erlang和RabbitMQ安装。 尝试卸载Erlang和RabbitMQ,也可以使用较旧的稳定版本。

或者使用官方的RabbitMQ泊坞窗图像。按照Docker RabbitMQ Docs进行设置。 :)