It finally happened! I am about to introduce my first proper open source project, it is called squeuelite and it is a Golang package that tries to fix the queue issue using SQLite only.
The package can be found out github.com/risico/goqueuelite, check it out. The package is not production ready yet, although I’ve been using it already in maile.io (from where I’ve extracted it) and is able to handle quite a bit of load (I’ll post benchmarks soon).
Getting started
Import the library into your project as usual:
package main
import (
"github.com/risico/goequeuelite"
)
func main() {
s, err : squeuelite.New(squeuelite.Params{
DatabasePath: "queue.db",
})
err := s.Put("default", "somedata", 0) // put "somedata" into the "default" namespace, execute as soon as possible
// handle err
v, err := s.Pop("default")
// handle err
// do something with v
s.Done(v.MessageID)
// or
s.Fail(v.MessageID)
// or
s.Retry(v.MessageID)
}
The library is safe to run concurrently, so here the main usecase would be to run workers in Go routines that pick jobs to work on. Jobs can be marked as done, failed or be sent back for retry.
The API will def change until v1 is stable so please be prepared for that.
Have fun!
Related Posts
Understanding the Unusual Behavior of Golang's Custom UnmarshalJSON Method with Inner and Outer Struct Fields
Introduction In this blog post, we will discuss an interesting case in Golang where using a custom UnmarshalJSON method on a struct with both inner and outer fields results in only the inner fields being unmarshaled. We will look into why this occurs and suggest two alternative solutions to
Stuff I Use
A small list of the stuff that I use every day.
Unraveling the Mystery of Ignored Files with git check-ignore
In the world of version control, Git has become an indispensable tool for developers. One of its key features is the ability to selectively ignore certain files or directories with the help of the .gitignore file. This can be a real lifesaver when you need to exclude files that don't belong in your repository, like build artifacts, logs, or user-specific settings. However, sometimes it can be challenging to figure out why a particular file is being ignored. That's where the git check-ignore command comes in handy! In this blog post, we'll explore this powerful yet underutilized Git command and how it can help you understand your .gitignore configuration....
Comments
Comments from this blog and Bluesky
No comments yet. Be the first to comment!