mirror of
https://github.com/acaloiaro/neoq
synced 2026-07-21 18:29:08 +00:00
49 lines
1.8 KiB
Go
49 lines
1.8 KiB
Go
package config
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/acaloiaro/neoq/types"
|
|
)
|
|
|
|
const (
|
|
DefaultIdleTxTimeout = 30000
|
|
// the window of time between time.Now() and when a job's RunAfter comes due that neoq will schedule a goroutine to
|
|
// schdule the job for execution.
|
|
// E.g. right now is 16:00 and a job's RunAfter is 16:30 of the same date. This job will get a dedicated goroutine to
|
|
// wait until the job's RunAfter, scheduling the job to be run exactly at RunAfter
|
|
DefaultFutureJobWindow = 30 * time.Second
|
|
DefaultJobCheckInterval = 5 * time.Second
|
|
DefaultTransactionTimeout = time.Minute
|
|
)
|
|
|
|
type Config struct {
|
|
BackendInitializer BackendInitializer
|
|
ConnectionString string // a string containing connection details for the backend
|
|
FutureJobWindow time.Duration // the window of time between now and RunAfter that goroutines are scheduled for future jobs
|
|
JobCheckInterval time.Duration // the interval of time between checking for new future/retry jobs
|
|
IdleTransactionTimeout int // the number of milliseconds PgBackend transaction may idle before the connection is killed
|
|
}
|
|
|
|
// Option is a function that sets optional backend configuration
|
|
type Option func(c *Config)
|
|
|
|
// New initiailizes a new Config with defaults
|
|
func New() *Config {
|
|
return &Config{
|
|
FutureJobWindow: DefaultFutureJobWindow,
|
|
JobCheckInterval: DefaultJobCheckInterval,
|
|
IdleTransactionTimeout: DefaultIdleTxTimeout,
|
|
}
|
|
}
|
|
|
|
// WithConnectionString configures neoq to use the specified connection string when connecting to a backend
|
|
func WithConnectionString(connectionString string) Option {
|
|
return func(c *Config) {
|
|
c.ConnectionString = connectionString
|
|
}
|
|
}
|
|
|
|
// BackendInitializer is a function that initializes a backend
|
|
type BackendInitializer func(ctx context.Context, opts ...Option) (backend types.Backend, err error)
|