Documentation ¶
Index ¶
- Variables
- type Job
- type JobEnqueuer
- type JobHandler
- type JobType
- type JobWorker
- type MemoryWorker
- func (w *MemoryWorker) DequeueLoop(ctx context.Context)
- func (w *MemoryWorker) Enqueue(ctx context.Context, job *Job) error
- func (w *MemoryWorker) RegisterHandler(jtype JobType, handler JobHandler, _ any)
- func (w *MemoryWorker) Stats(_ context.Context) (Stats, error)
- func (w *MemoryWorker) Stop(_ context.Context)
- type RedisWorker
- func (w *RedisWorker) DequeueLoop(ctx context.Context)
- func (w *RedisWorker) Enqueue(ctx context.Context, job *Job) error
- func (w *RedisWorker) RegisterHandler(jtype JobType, handler JobHandler, args any)
- func (w *RedisWorker) Stats(ctx context.Context) (Stats, error)
- func (w *RedisWorker) Stop(ctx context.Context)
- type Stats
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrHandlerNotFound = errors.New("handler not registered")
View Source
var ErrJobNotFound = errors.New("job not found")
Functions ¶
This section is empty.
Types ¶
type Job ¶
type Job struct { // Random UUID for logging and tracing. It is generated randomly by Enqueue function when blank. ID uuid.UUID // Job type or "queue". Type JobType // Associated account. AccountID int64 // Associated identity Identity identity.Principal // For logging purposes TraceContext propagation.MapCarrier // For logging purposes EdgeID string // Job arguments. Args any }
type JobEnqueuer ¶
type JobEnqueuer interface { // Enqueue delivers a job to one of the backend workers. Enqueue(context.Context, *Job) error }
JobEnqueuer sends Job messages into worker queue.
type JobHandler ¶
type JobWorker ¶
type JobWorker interface { // RegisterHandler registers an event listener for a particular type with an associated handler. RegisterHandler(JobType, JobHandler, any) // DequeueLoop starts one or more goroutines to dispatch incoming jobs. DequeueLoop(ctx context.Context) // Stop let's background workers to finish all jobs and terminates them. It blocks until workers are done. Stop(ctx context.Context) // Stats returns statistics. Not all implementations supports stats, some may return zero values. Stats(ctx context.Context) (Stats, error) }
JobWorker receives and handles Job messages.
type MemoryWorker ¶
type MemoryWorker struct {
// contains filtered or unexported fields
}
func NewMemoryClient ¶
func NewMemoryClient() *MemoryWorker
func (*MemoryWorker) DequeueLoop ¶
func (w *MemoryWorker) DequeueLoop(ctx context.Context)
func (*MemoryWorker) RegisterHandler ¶
func (w *MemoryWorker) RegisterHandler(jtype JobType, handler JobHandler, _ any)
func (*MemoryWorker) Stop ¶
func (w *MemoryWorker) Stop(_ context.Context)
type RedisWorker ¶
type RedisWorker struct {
// contains filtered or unexported fields
}
func NewRedisWorker ¶
func NewRedisWorker(address, username, password string, db int, queueName string, pollInterval time.Duration, concurrency int) (*RedisWorker, error)
NewRedisWorker creates new worker that keeps all jobs in a single queue (list), starts N polling goroutines which fetch jobs from the queue and process them in the same goroutine. Use the Stats function to track number of in-flight jobs.
func (*RedisWorker) DequeueLoop ¶
func (w *RedisWorker) DequeueLoop(ctx context.Context)
func (*RedisWorker) RegisterHandler ¶
func (w *RedisWorker) RegisterHandler(jtype JobType, handler JobHandler, args any)
func (*RedisWorker) Stop ¶
func (w *RedisWorker) Stop(ctx context.Context)
Click to show internal directories.
Click to hide internal directories.