github.com/goravel/framework@v1.13.9/queue/application.go (about) 1 package queue 2 3 import ( 4 configcontract "github.com/goravel/framework/contracts/config" 5 "github.com/goravel/framework/contracts/log" 6 "github.com/goravel/framework/contracts/queue" 7 ) 8 9 type Application struct { 10 config *Config 11 jobs []queue.Job 12 log log.Log 13 } 14 15 func NewApplication(config configcontract.Config, log log.Log) *Application { 16 return &Application{ 17 config: NewConfig(config), 18 log: log, 19 } 20 } 21 22 func (app *Application) Worker(args *queue.Args) queue.Worker { 23 defaultConnection := app.config.DefaultConnection() 24 25 if args == nil { 26 return NewWorker(app.config, app.log, 1, defaultConnection, app.jobs, app.config.Queue(defaultConnection, "")) 27 } 28 if args.Connection == "" { 29 args.Connection = defaultConnection 30 } 31 32 return NewWorker(app.config, app.log, args.Concurrent, args.Connection, app.jobs, app.config.Queue(args.Connection, args.Queue)) 33 } 34 35 func (app *Application) Register(jobs []queue.Job) { 36 app.jobs = append(app.jobs, jobs...) 37 } 38 39 func (app *Application) GetJobs() []queue.Job { 40 return app.jobs 41 } 42 43 func (app *Application) Job(job queue.Job, args []queue.Arg) queue.Task { 44 return NewTask(app.config, app.log, job, args) 45 } 46 47 func (app *Application) Chain(jobs []queue.Jobs) queue.Task { 48 return NewChainTask(app.config, app.log, jobs) 49 }