@@ -40,6 +40,14 @@ type Config struct {
4040 ConductorAPIKey string // DBOS conductor API key (optional)
4141 ApplicationVersion string // Application version (optional, overridden by DBOS__APPVERSION env var)
4242 ExecutorID string // Executor ID (optional, overridden by DBOS__VMID env var)
43+ QueueRunner QueueConfig // Queue configuration (optional)
44+ }
45+
46+ // QueueConfig configures the queue runner polling behavior.
47+ type QueueConfig struct {
48+ BaseInterval float64 // seconds
49+ MinInterval float64 // seconds
50+ MaxInterval float64 // seconds
4351}
4452
4553func processConfig (inputConfig * Config ) (* Config , error ) {
@@ -54,6 +62,10 @@ func processConfig(inputConfig *Config) (*Config, error) {
5462 inputConfig .AdminServerPort = _DEFAULT_ADMIN_SERVER_PORT
5563 }
5664
65+ if inputConfig .QueueRunner .MinInterval > inputConfig .QueueRunner .MaxInterval {
66+ return nil , fmt .Errorf ("minInterval must be less than maxInterval" )
67+ }
68+
5769 dbosConfig := & Config {
5870 DatabaseURL : inputConfig .DatabaseURL ,
5971 AppName : inputConfig .AppName ,
@@ -66,6 +78,7 @@ func processConfig(inputConfig *Config) (*Config, error) {
6678 ApplicationVersion : inputConfig .ApplicationVersion ,
6779 ExecutorID : inputConfig .ExecutorID ,
6880 SystemDBPool : inputConfig .SystemDBPool ,
81+ QueueRunner : inputConfig .QueueRunner ,
6982 }
7083
7184 // Load defaults
@@ -379,7 +392,7 @@ func NewDBOSContext(ctx context.Context, inputConfig Config) (DBOSContext, error
379392 initExecutor .logger .Debug ("System database initialized" )
380393
381394 // Initialize the queue runner and register DBOS internal queue
382- initExecutor .queueRunner = newQueueRunner (initExecutor .logger )
395+ initExecutor .queueRunner = newQueueRunner (initExecutor .logger , config . QueueRunner )
383396
384397 // Initialize conductor if API key is provided
385398 if config .ConductorAPIKey != "" {
0 commit comments