Skip to content

fastforgeinc/uni-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Universal queue library for Golang

uni-queue library defines basic Queue interface that implements queues using:

  • Redis Lists - ListQueue
  • Redis Streams - StreamQueue (TBD)
  • AWS SQS - SQS (TBD)

Installation

go get github.com/fastforgeinc/uni-queue

Quickstart

package main

import (
	"context"
	"log"
	"time"

	"github.com/go-redis/redis/v8"
	"github.com/fastforgeinc/uni-queue"
)

type Object struct {
	Str string
	Num int
}

func main() {
	ctx := context.TODO()

	// Construct ®Redis client
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})

	// Construct ListQueue
	q := queue.NewListQueue(client)

	// Construct ListQueue with dequeue timeout
	timeout := time.Second
	q := queue.NewListQueue(client, queue.WithDequeueTimeout(timeout))

	// Enqueue value
	input := Object{"foo", 69}
	err := q.Enqueue(ctx, "queue:name", &input)
	if err != nil {
		log.Fatal(err)
	}

	// Dequeue value
	var output Object
	err := queue.Dequeue(ctx, "queue:name", &output)
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("%v", output)
}

About

Queue based on (c) Redis Lists and Stream

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published