queue

package
v0.6.0-rc3 Latest Latest
Warning

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

Go to latest
Published: Feb 16, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrJobNotFound = errors.New("job not found")

ErrJobNotFound is returned when a job is not found

Functions

This section is empty.

Types

type MemoryQueue

type MemoryQueue struct {
	// contains filtered or unexported fields
}

MemoryQueue implements an in-memory job queue

func NewMemoryQueue

func NewMemoryQueue(bufferSize int) *MemoryQueue

NewMemoryQueue creates a new in-memory queue

func (*MemoryQueue) Close

func (q *MemoryQueue) Close() error

Close closes the queue and releases resources

func (*MemoryQueue) Complete

func (q *MemoryQueue) Complete(ctx context.Context, jobID uuid.UUID, logs string) error

Complete marks a job as completed

func (*MemoryQueue) Dequeue

func (q *MemoryQueue) Dequeue(ctx context.Context) (*models.Job, error)

Dequeue retrieves the next job from the queue

func (*MemoryQueue) Enqueue

func (q *MemoryQueue) Enqueue(ctx context.Context, job *models.Job) error

Enqueue adds a job to the queue

func (*MemoryQueue) Fail

func (q *MemoryQueue) Fail(ctx context.Context, jobID uuid.UUID, errorMsg string, logs string) error

Fail marks a job as failed

func (*MemoryQueue) GetStatus

func (q *MemoryQueue) GetStatus(ctx context.Context, jobID uuid.UUID) (*models.Job, error)

GetStatus retrieves the current status of a job

func (*MemoryQueue) UpdateStatus

func (q *MemoryQueue) UpdateStatus(ctx context.Context, jobID uuid.UUID, status models.JobStatus, logs string) error

UpdateStatus updates the status of a job

type Queue

type Queue interface {
	// Enqueue adds a job to the queue
	Enqueue(ctx context.Context, job *models.Job) error

	// Dequeue retrieves the next job from the queue
	Dequeue(ctx context.Context) (*models.Job, error)

	// GetStatus retrieves the current status of a job
	GetStatus(ctx context.Context, jobID uuid.UUID) (*models.Job, error)

	// UpdateStatus updates the status of a job
	UpdateStatus(ctx context.Context, jobID uuid.UUID, status models.JobStatus, logs string) error

	// Complete marks a job as completed
	Complete(ctx context.Context, jobID uuid.UUID, logs string) error

	// Fail marks a job as failed
	Fail(ctx context.Context, jobID uuid.UUID, errorMsg string, logs string) error

	// Close closes the queue and releases resources
	Close() error
}

Queue represents a job queue interface

type ValkeyQueue

type ValkeyQueue struct {
	// contains filtered or unexported fields
}

ValkeyQueue implements a distributed job queue using Valkey Valkey is used for job transport (job IDs only), DB is source of truth

func NewValkeyQueue

func NewValkeyQueue(addr string, db *gorm.DB) (*ValkeyQueue, error)

NewValkeyQueue creates a new Valkey-backed queue

func (*ValkeyQueue) Close

func (q *ValkeyQueue) Close() error

Close closes the Valkey connection

func (*ValkeyQueue) Complete

func (q *ValkeyQueue) Complete(ctx context.Context, jobID uuid.UUID, logs string) error

Complete marks a job as completed in the database

func (*ValkeyQueue) Dequeue

func (q *ValkeyQueue) Dequeue(ctx context.Context) (*models.Job, error)

Dequeue retrieves the next job from the queue (blocking) 1. BLPOP from Valkey (blocking pop with timeout) 2. Parse job ID 3. Fetch full job from DB

func (*ValkeyQueue) Enqueue

func (q *ValkeyQueue) Enqueue(ctx context.Context, job *models.Job) error

Enqueue adds a job to the queue 1. Save job to DB (source of truth) 2. Push job ID to Valkey list

func (*ValkeyQueue) Fail

func (q *ValkeyQueue) Fail(ctx context.Context, jobID uuid.UUID, errorMsg string, logs string) error

Fail marks a job as failed in the database

func (*ValkeyQueue) GetClient

func (q *ValkeyQueue) GetClient() valkey.Client

GetClient returns the underlying Valkey client Used for distributed log streaming via pub/sub

func (*ValkeyQueue) GetStatus

func (q *ValkeyQueue) GetStatus(ctx context.Context, jobID uuid.UUID) (*models.Job, error)

GetStatus retrieves the current status of a job from the database

func (*ValkeyQueue) UpdateStatus

func (q *ValkeyQueue) UpdateStatus(ctx context.Context, jobID uuid.UUID, status models.JobStatus, logs string) error

UpdateStatus updates the status of a job in the database

Jump to

Keyboard shortcuts

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