Documentation
¶
Index ¶
- func InitGlobalManager(config ManagerConfig)
- func NewJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string) types.Job
- func ScheduleGlobal(args types.CLIArgs, runAt time.Time, cronExpr, interval string, ...) error
- func StopGlobal()
- type EmailScheduler
- type JobHandler
- type Logger
- type ManagerConfig
- type OptimizedConfig
- type OptimizedScheduler
- func (s *OptimizedScheduler) AddJob(job types.Job, handler JobHandler) error
- func (s *OptimizedScheduler) CancelJob(jobID string) bool
- func (s *OptimizedScheduler) GetMetrics() *metrics.Metrics
- func (s *OptimizedScheduler) ListJobs() ([]types.Job, error)
- func (s *OptimizedScheduler) ReattachHandlers(handler JobHandler)
- func (s *OptimizedScheduler) Stop()
- type Scheduler
- type SchedulerManager
- func (sm *SchedulerManager) AttachDefaultHandler(handler JobHandler) error
- func (sm *SchedulerManager) CancelJob(jobID string) error
- func (sm *SchedulerManager) GetMetrics() *metrics.Metrics
- func (sm *SchedulerManager) IsRunning() bool
- func (sm *SchedulerManager) ListJobs() ([]types.Job, error)
- func (sm *SchedulerManager) RunDaemon(ctx context.Context) error
- func (sm *SchedulerManager) ScheduleJob(args types.CLIArgs, runAt time.Time, cronExpr, interval string, ...) error
- func (sm *SchedulerManager) Stop()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InitGlobalManager ¶
func InitGlobalManager(config ManagerConfig)
InitGlobalManager initializes the global scheduler manager
func ScheduleGlobal ¶
func ScheduleGlobal(args types.CLIArgs, runAt time.Time, cronExpr, interval string, handler JobHandler) error
ScheduleGlobal schedules a job using the global 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 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) ListJobs ¶
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.
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