hq

🐁 happy little queue

MIT License

Stars
16

happy little queue

97% covered, 90LOC, 80_000RPS, integration test, auto-cleaning, lightweight

When your Go code does not panic When your infra does not fail When your data is small When your data is temporary When all you need is a happy little queue

// once you have a redis connection
rdb := redis.NewClient(...)             // "github.com/go-redis/redis/v8"     

...

// you can boot a lightweight worker
worker := hq.ReceiveWorker{
    Redis:      rdb,
    Queue:      "my-queue",
    PoolIdle:   time.Minute,            // recommended!
    PoolActive: time.Millisecond * 50,  // recommended! 
    NumWorkers: 10,                     // recommended!
    Batch:      100,                    // recommended!
    Handler:    &handler,               // interface { Handle(message []byte) error }
}
go worker.Work()

...

// and send something
sender := hq.Sender{
    Redis:  rdb,
    Queue:  "my-queue",
    MaxLen: 10,
    TTL:    time.Hour * 4,
}
sender.Send([]byte("my-bytes"))

// in redis it is single list
// LLEN my-queue

It is as fast as Redis, so should be around 80_000RPS.

P.S. "happy" because optimistic

Package Rankings
Top 8.17% on Proxy.golang.org
Badges
Extracted from project README
Go Reference Go Report Card OpenSSF Scorecard