Skip to content

piquette/msgr

Repository files navigation

msgr | AMQP Client

GoDoc Build Status Coverage Status

Summary

This go module is a tiny wrapper around the streadway/amqp, the standard low level golang client for rabbitmq, the open source message broker.

msgr abstracts away a few of the complexities of rabbitmq and exposes a slightly friendlier interface, intended for simple applications.

Documentation

For details on all the functionality in this library, see the GoDoc documentation.

Installation

This project supports modules and Go 1.13+. Add msgr to your own project the usual way -

go get github.com/piquette/msgr

Usage example

Producer

// Instantiate and connect to the server.
conf := &msgr.Config{
    URI:     "amqp://localhost:5672",
    Channel: "queue_name",
}
producer = msgr.ConnectP(conf)
defer producer.Close()

// Send a message.
Enqueue:
{
    success := producer.Post([]byte("hi")])
    if !success {
        // Retry for all eternity.
        log.Println("could not enqueue msg")
        time.Sleep(time.Second * 3)
        goto Enqueue
    }
}

Consumer

// Instantiate and connect to the server.
conf := &msgr.Config{
    URI:     "amqp://localhost:5672",
    Channel: "queue_name",
}
consumer = msgr.ConnectC(conf)
defer consumer.Close()

// Receive messages.
open, messages := s.Consumer.Accept()
if !open {
    return
}
// Range over the messages chan.
for recv := range messages {
    // Got one.
    fmt.Println(string(recv.Body)) // prints 'hi'.

    // Don't forget to acknowledge.
    recv.Ack(false)
}

Contributing

This modules is a work in progress and needs a lot of refinement. Please submit an issue if you need help!