queue

package module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 26, 2024 License: MIT Imports: 7 Imported by: 0

README

go-queue

Esse projeto implementa uma fila de processamento simples. O usuário pode enfileirar estruturas de dados usando a função Enqueue para serem processadas pela callback fornecida na função Dequeue.

A função Listen serve para monitorar se novos valores foram adicionados na fila. Caso tenha algum valor, a função Dequeue é chamada até que a fila esteja vazia.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ProcessAsync

func ProcessAsync(callbacks ...ProcessableFunc)

Executa funções de forma assíncrona usando WaitGroup para sincronizar as Goroutines. As funções passadas por parâmetro recebem um ponteiro para o WaitGroup e devem executar WaitGroup.Done() quando finalizarem sua execução

Types

type CallbackFunc

type CallbackFunc[T any] func(args T) error

type ProcessableFunc

type ProcessableFunc func(wg *sync.WaitGroup)

type Queue

type Queue[T any] struct {
	// contains filtered or unexported fields
}

func (*Queue[T]) Dequeue

func (q *Queue[T]) Dequeue(callback CallbackFunc[T]) error

Desenfileira um item. Executa a callback passando os dados encontrados na primeira posição da fila.

func (*Queue[T]) Enqueue

func (q *Queue[T]) Enqueue(args T) error

Adiciona um novo valor no final da fila.

func (*Queue[T]) Listen

func (q *Queue[T]) Listen(callback CallbackFunc[T])

Verifica se existe algum item na fila a cada 10 segundos. Se existir, essa função chamará a função Queue.Dequeue(callback CallbackFunc[T])

type QueueConfig

type QueueConfig struct {
	// Número de vezes que uma callback será reexecutada em caso de erro
	Retries int

	// Tempo de espera para executar a callback em caso de erro
	RetriesAfter time.Duration
}

type QueueError

type QueueError[T any] struct {
	Data         T
	ErrorMessage string
	CreatedAt    time.Time
}

Caso uma callback retorne um erro, essa estrutura de dados será salva no redis com informações sobre o erro, a data em que o error ocorreu e os dados que estavam na fila.

type QueueProtocol

type QueueProtocol[T any] interface {
	Enqueue(args T) error
	Listen(callback CallbackFunc[T])
	Dequeue(callback CallbackFunc[T]) error
}

func NewQueue

func NewQueue[T any](qName string, config *QueueConfig, redisClient *redis.Client) (QueueProtocol[T], error)

Cria uma nova instância da fila.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL