Sharthak Ghosh
Sharthak Ghosh

Reputation: 596

RabbitMQ Producer is stuck in golang

Im new to golang and rabbitmq, I have written a simple producer like this

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))
    }
}

When I run this it doesnt exit niether does it throw any error messages. In the RabbitMQ management console I can see the Queue but there is no data in it and only shows NaN.

Upvotes: 1

Views: 807

Answers (1)

rupj
rupj

Reputation: 335

It's probably an issue with your setup. I faced a similar issue and tried with a different Erlang and RabbitMQ installation. Try uninstalling both Erlang and RabbitMQ and maybe use an older stable version.

Alternatively use the official RabbitMQ docker image. Follow the Docker RabbitMQ Docs for setting it up. :)

Upvotes: 1

Related Questions