Documentation
¶
Index ¶
- Variables
- type MemoryQueue
- func (q *MemoryQueue) Close() error
- func (q *MemoryQueue) Complete(ctx context.Context, jobID uuid.UUID, logs string) error
- func (q *MemoryQueue) Dequeue(ctx context.Context) (*models.Job, error)
- func (q *MemoryQueue) Enqueue(ctx context.Context, job *models.Job) error
- func (q *MemoryQueue) Fail(ctx context.Context, jobID uuid.UUID, errorMsg string, logs string) error
- func (q *MemoryQueue) GetStatus(ctx context.Context, jobID uuid.UUID) (*models.Job, error)
- func (q *MemoryQueue) UpdateStatus(ctx context.Context, jobID uuid.UUID, status models.JobStatus, logs string) error
- type Queue
- type ValkeyQueue
- func (q *ValkeyQueue) Close() error
- func (q *ValkeyQueue) Complete(ctx context.Context, jobID uuid.UUID, logs string) error
- func (q *ValkeyQueue) Dequeue(ctx context.Context) (*models.Job, error)
- func (q *ValkeyQueue) Enqueue(ctx context.Context, job *models.Job) error
- func (q *ValkeyQueue) Fail(ctx context.Context, jobID uuid.UUID, errorMsg string, logs string) error
- func (q *ValkeyQueue) GetClient() valkey.Client
- func (q *ValkeyQueue) GetStatus(ctx context.Context, jobID uuid.UUID) (*models.Job, error)
- func (q *ValkeyQueue) UpdateStatus(ctx context.Context, jobID uuid.UUID, status models.JobStatus, logs string) error
Constants ¶
This section is empty.
Variables ¶
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) Fail ¶
func (q *MemoryQueue) Fail(ctx context.Context, jobID uuid.UUID, errorMsg string, logs string) error
Fail marks a job as failed
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) Dequeue ¶
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 ¶
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