26 lines
913 B
Go
26 lines
913 B
Go
package worker
|
|||
|
|
|
||
|
|
import "time"
|
||
|
|
|
||
|
|
// Config holds worker pool settings.
|
||
|
|
type Config struct {
|
||
|
|
// PoolSize is the number of concurrent goroutines. Default: 5.
|
||
|
|
PoolSize int `env:"EINHERJAR_WORKER_POOL_SIZE" envDefault:"5"`
|
||
|
|
// BufferSize is the task queue capacity. Default: 100.
|
||
|
|
BufferSize int `env:"EINHERJAR_WORKER_BUFFER_SIZE" envDefault:"100"`
|
||
|
|
// TaskTimeout is the maximum duration for a single task. Zero means no deadline.
|
||
|
|
TaskTimeout time.Duration `env:"EINHERJAR_WORKER_TASK_TIMEOUT" envDefault:"0s"`
|
||
|
|
// ShutdownTimeout is how long OnStop waits for goroutines to drain. Default: 30s.
|
||
|
|
ShutdownTimeout time.Duration `env:"EINHERJAR_WORKER_SHUTDOWN_TIMEOUT" envDefault:"30s"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// DefaultConfig returns a production-safe worker pool configuration.
|
||
|
|
func DefaultConfig() Config {
|
||
|
|
return Config{
|
||
|
|
PoolSize: 5,
|
||
|
|
BufferSize: 100,
|
||
|
|
TaskTimeout: 0,
|
||
|
|
ShutdownTimeout: 30 * time.Second,
|
||
|
|
}
|
||
|
|
}
|