scheduler

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Oct 1, 2025 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitGlobalManager

func InitGlobalManager(config ManagerConfig)

InitGlobalManager initializes the global scheduler manager

func NewJob

func NewJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string) types.Job

NewJob constructs a Job from CLI args and desired schedule.

func ScheduleGlobal

func ScheduleGlobal(args types.CLIArgs, runAt time.Time, cronExpr, interval string, handler JobHandler) error

ScheduleGlobal schedules a job using the global manager

func StopGlobal

func StopGlobal()

StopGlobal stops the global scheduler manager

Types

type EmailScheduler

type EmailScheduler struct {
	*Scheduler
}

EmailScheduler embeds Scheduler and handles email-specific jobs.

func NewEmailScheduler

func NewEmailScheduler(s *Scheduler) *EmailScheduler

NewEmailScheduler creates a new scheduler for email jobs.

func (*EmailScheduler) AddEmailJob

func (es *EmailScheduler) AddEmailJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string, handler func(types.Job) error) error

AddEmailJob creates a new job and adds it to the scheduler.

func (*EmailScheduler) ReattachHandlers

func (es *EmailScheduler) ReattachHandlers(handler func(types.Job) error)

ReattachHandlers rebinds handlers for persisted jobs after process restarts.

type JobHandler

type JobHandler func(types.Job) error

type Logger

type Logger interface {
	Infof(format string, args ...any)
	Warnf(format string, args ...any)
	Errorf(format string, args ...any)
}

Logger is a minimal logging interface compatible with logrus.Logger and our logger package.

type ManagerConfig

type ManagerConfig struct {
	DBPath          string
	SMTPConfig      config.SMTPConfig
	OptimizedConfig OptimizedConfig
	ShutdownDelay   time.Duration // Time to wait before auto-shutdown when no jobs
	AutoShutdown    bool          // Whether to auto-shutdown when idle
}

ManagerConfig provides configuration for the scheduler manager

func DefaultManagerConfig

func DefaultManagerConfig() ManagerConfig

DefaultManagerConfig returns sensible defaults for the manager

type OptimizedConfig

type OptimizedConfig struct {
	MaxConcurrency   int
	AdaptivePolling  bool
	BaseInterval     time.Duration
	MaxInterval      time.Duration
	PoolConfig       email.PoolConfig
	BatchConfig      email.BatchConfig
	MetricsPort      int
	EnableResilience bool
}

OptimizedConfig provides configuration for the optimized scheduler

func DefaultOptimizedConfig

func DefaultOptimizedConfig() OptimizedConfig

DefaultOptimizedConfig returns sensible defaults

type OptimizedScheduler

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

OptimizedScheduler provides high-performance job scheduling with: - Concurrent job execution - Adaptive polling intervals - Performance metrics - Connection pooling - Circuit breaking and resilience

func NewOptimizedScheduler

func NewOptimizedScheduler(db *database.BoltDBClient, log Logger, smtpCfg interface{}, config OptimizedConfig) (*OptimizedScheduler, error)

NewOptimizedScheduler creates a high-performance scheduler

func (*OptimizedScheduler) AddJob

func (s *OptimizedScheduler) AddJob(job types.Job, handler JobHandler) error

AddJob registers a job with enhanced error handling

func (*OptimizedScheduler) CancelJob

func (s *OptimizedScheduler) CancelJob(jobID string) bool

CancelJob cancels a job with metrics

func (*OptimizedScheduler) GetMetrics

func (s *OptimizedScheduler) GetMetrics() *metrics.Metrics

GetMetrics returns current performance metrics

func (*OptimizedScheduler) ListJobs

func (s *OptimizedScheduler) ListJobs() ([]types.Job, error)

ListJobs returns all jobs from cache

func (*OptimizedScheduler) ReattachHandlers

func (s *OptimizedScheduler) ReattachHandlers(handler JobHandler)

ReattachHandlers sets handlers for existing jobs

func (*OptimizedScheduler) Stop

func (s *OptimizedScheduler) Stop()

Stop gracefully stops the optimized scheduler

type Scheduler

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

Scheduler provides durable, concurrent job scheduling with persistent state.

func NewScheduler

func NewScheduler(db *database.BoltDBClient, log Logger) *Scheduler

NewScheduler constructs a scheduler and starts the dispatcher loop.

func (*Scheduler) AddJob

func (s *Scheduler) AddJob(job types.Job, handler JobHandler) error

AddJob registers a job and its handler, persists it, and schedules execution.

func (*Scheduler) CancelJob

func (s *Scheduler) CancelJob(jobID string) bool

CancelJob marks a job as cancelled and prevents future execution.

func (*Scheduler) ListJobs

func (s *Scheduler) ListJobs() ([]types.Job, error)

ListJobs returns all stored jobs from the in-memory cache for up-to-date state.

func (*Scheduler) ReattachHandlers

func (s *Scheduler) ReattachHandlers(handler JobHandler)

ReattachHandlers sets a default handler for all existing jobs that do not have one in-memory.

func (*Scheduler) Stop

func (s *Scheduler) Stop()

Stop stops the scheduler and waits for running tasks to finish.

type SchedulerManager

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

SchedulerManager provides automatic scheduler lifecycle management It automatically starts the scheduler when jobs are scheduled and manages cleanup

func GetGlobalManager

func GetGlobalManager() *SchedulerManager

GetGlobalManager returns the global scheduler manager

func NewSchedulerManager

func NewSchedulerManager(config ManagerConfig) *SchedulerManager

NewSchedulerManager creates a new scheduler manager

func (*SchedulerManager) AttachDefaultHandler

func (sm *SchedulerManager) AttachDefaultHandler(handler JobHandler) error

AttachDefaultHandler attaches a default handler for job execution

func (*SchedulerManager) CancelJob

func (sm *SchedulerManager) CancelJob(jobID string) error

CancelJob cancels a scheduled job

func (*SchedulerManager) GetMetrics

func (sm *SchedulerManager) GetMetrics() *metrics.Metrics

GetMetrics returns current scheduler metrics

func (*SchedulerManager) IsRunning

func (sm *SchedulerManager) IsRunning() bool

IsRunning returns whether the scheduler is currently running

func (*SchedulerManager) ListJobs

func (sm *SchedulerManager) ListJobs() ([]types.Job, error)

ListJobs returns all scheduled jobs

func (*SchedulerManager) RunDaemon

func (sm *SchedulerManager) RunDaemon(ctx context.Context) error

RunDaemon runs the scheduler as a daemon process

func (*SchedulerManager) ScheduleJob

func (sm *SchedulerManager) ScheduleJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string, handler JobHandler) error

ScheduleJob schedules a job, automatically starting the scheduler if needed

func (*SchedulerManager) Stop

func (sm *SchedulerManager) Stop()

Stop gracefully stops the scheduler and all associated services

Jump to

Keyboard shortcuts

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