soroosh-tanzadeh / rmq

A simple message queue for go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RMQ

RMQ (stands for Redis Message Queue) is a simple message queue that allows communication between applications through Redis ZSet. RMQ uses micro-time to prevent duplicated message delivery.

Usages

package main

import (
	"context"
	"fmt"
	"github.com/redis/go-redis/v9"
	"github.com/soroosh-tanzadeh/rmq"
)

func main() {
	ctx := context.Background()
	client := redis.NewClient(&redis.Options{Addr: "127.0.0.1:6379"})

	visibilityTime := 100
	queue := rmq.NewRedisMessageQueue(client, "prefix", "queue", visibilityTime, delayTime, true)

	// Initialize Message Queue
	err := queue.Init(ctx)
	if err != nil {
		panic(err)
	}

	// Push message to queue
	messageId, err := queue.Push(ctx, "Message Payload")
	if err != nil {
		panic(err)
	}
	fmt.Printf("Message with id %s pushed to queue", messageId)

	// Consume Messages
	go func() {
		err := queue.Consume(ctx, func(message rmq.Message) {
			fmt.Printf("Message with id %s received from queue", message.GetId())
		})
		if err != nil {
			panic(err)
		}
	}()
}

About

A simple message queue for go

License:GNU General Public License v3.0


Languages

Language:Go 100.0%