Help us shape the future of Go! Take the 2026 Go Developer Survey

jobqueue

package
v3.6.19 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2026 License: AGPL-3.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrJobTypeAlreadyRegistered is returned when trying to register a job type that is already registered
	ErrJobTypeAlreadyRegistered = errors.New("job type already registered")
)

Functions

This section is empty.

Types

type Builder

type Builder interface {
	// BuildJobs builds new jobs and sends them to the provided channel
	// It should be a blocking call and returns when ctx is cancelled.
	BuildJobs(ctx context.Context, jobsChan chan<- *grpc.Job)

	// OnJobResponse reports back the response of the job execution.
	OnJobResponse(response *grpc.JobResult) error

	// JobsLeft reports the estimated number of jobs left to process.
	// It should be updated when jobs are successfully processed or new work is picked up for execution.
	// It should include in-flight and upcoming jobs even if they are created on-demand.
	// It could just estimate jobs left to be processed for concluding ongoing unit of work.
	// The implementation must be concurrency safe.
	JobsLeft() int
}

Builder defines the interface for building jobs that will be added to the queue

type CompactorClient

type CompactorClient interface {
	JobQueueClient() grpc.JobQueueClient
}

type JobRunner

type JobRunner interface {
	Run(ctx context.Context, job *grpc.Job) ([]byte, error)
}

type Queue

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

Queue implements the job queue service

func NewQueue

func NewQueue(r prometheus.Registerer) *Queue

NewQueue creates a new job queue

func (*Queue) Loop

func (q *Queue) Loop(s grpc.JobQueue_LoopServer) error

func (*Queue) RegisterBuilder

func (q *Queue) RegisterBuilder(jobType grpc.JobType, b Builder, jobTimeout time.Duration, maxRetries int, r prometheus.Registerer) error

RegisterBuilder registers a builder for a specific job type

func (*Queue) Start

func (q *Queue) Start(ctx context.Context)

Start starts all registered builders

type WorkerConfig

type WorkerConfig struct {
	NumWorkers int `yaml:"num_sub_workers"`
}

func (*WorkerConfig) RegisterFlags

func (c *WorkerConfig) RegisterFlags(f *flag.FlagSet)

func (*WorkerConfig) RegisterFlagsWithPrefix

func (c *WorkerConfig) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet)

func (*WorkerConfig) Validate

func (c *WorkerConfig) Validate() error

type WorkerManager

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

func NewWorkerManager

func NewWorkerManager(cfg WorkerConfig, grpcClient CompactorClient, r prometheus.Registerer) *WorkerManager

func (*WorkerManager) RegisterJobRunner

func (w *WorkerManager) RegisterJobRunner(jobType grpc.JobType, jobRunner JobRunner) error

func (*WorkerManager) Start

func (w *WorkerManager) Start(ctx context.Context) error

Jump to

Keyboard shortcuts

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