Categorygithub.com/sihendra/go-msgbuzz
repositorypackage
0.2.0-alpha.4
Repository: https://github.com/sihendra/go-msgbuzz.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

go-msgbuzz

Message Bus Abstraction with rabbitmq implementation

Usage

    package main
    
    import (
        "fmt"
        "github.com/sihendra/go-msgbuzz"
        "time"
    )   

    func main() {        
        // Create msgbuzz instance
        msgBus := msgbuzz.NewRabbitMqClient("amqp://127.0.0.1:5672", 4)
    
        // Register consumer of some topic
        msgBus.On("profile.created", "reco_engine", func(confirm msgbuzz.MessageConfirm, bytes []byte) error {
            defer confirm.Ack()
            fmt.Printf("Incoming message: %s", string(bytes))
    
            return nil
        })
        
        go func(client *msgbuzz.RabbitMqClient) {
            // Wait consumer start, if no consumer no message will be saved by rabbitmq
            time.Sleep(time.Second * 1)
    
            // Publish to topic
            msgBus.Publish("profile.created", []byte(`{"name":"Dodo"}`))
    
            // Wait for consumer picking the message before stopping
            time.Sleep(time.Second * 1)
            msgBus.Close()
        }(msgBus)
    
        // Will block until msgbuzz closed
        fmt.Println("Start Consuming")
        msgBus.StartConsuming()
        fmt.Println("Finish Consuming")

    }    

Testing

All Tests

Run $ make test-all to run all tests.

Unit Tests

Run $ make test-unit to run unit tests only.

Integration Tests

Run $ make test-integration to run integration tests only (require docker).