github.com/TIBCOSoftware/flogo-lib@v0.5.9/engine/config.go (about)

     1  package engine
     2  
     3  import (
     4  	"os"
     5  	"strconv"
     6  
     7  	"github.com/TIBCOSoftware/flogo-lib/engine/runner"
     8  )
     9  
    10  const (
    11  	ENV_RUNNER_TYPE_KEY       = "FLOGO_RUNNER_TYPE"
    12  	RUNNER_TYPE_DEFAULT       = "POOLED"
    13  	ENV_RUNNER_WORKERS_KEY    = "FLOGO_RUNNER_WORKERS"
    14  	RUNNER_WORKERS_DEFAULT    = 5
    15  	ENV_RUNNER_QUEUE_SIZE_KEY = "FLOGO_RUNNER_QUEUE"
    16  	RUNNER_QUEUE_SIZE_DEFAULT = 50
    17  )
    18  
    19  //GetRunnerType returns the runner type
    20  func GetRunnerType() string {
    21  	runnerTypeEnv := os.Getenv(ENV_RUNNER_TYPE_KEY)
    22  	if len(runnerTypeEnv) > 0 {
    23  		return runnerTypeEnv
    24  	}
    25  	return RUNNER_TYPE_DEFAULT
    26  }
    27  
    28  //GetRunnerWorkers returns the number of workers to use
    29  func GetRunnerWorkers() int {
    30  	numWorkers := RUNNER_WORKERS_DEFAULT
    31  	workersEnv := os.Getenv(ENV_RUNNER_WORKERS_KEY)
    32  	if len(workersEnv) > 0 {
    33  		i, err := strconv.Atoi(workersEnv)
    34  		if err == nil {
    35  			numWorkers = i
    36  		}
    37  	}
    38  	return numWorkers
    39  }
    40  
    41  //GetRunnerQueueSize returns the runner queue size
    42  func GetRunnerQueueSize() int {
    43  	queueSize := RUNNER_QUEUE_SIZE_DEFAULT
    44  	queueSizeEnv := os.Getenv(ENV_RUNNER_QUEUE_SIZE_KEY)
    45  	if len(queueSizeEnv) > 0 {
    46  		i, err := strconv.Atoi(queueSizeEnv)
    47  		if err == nil {
    48  			queueSize = i
    49  		}
    50  	}
    51  	return queueSize
    52  }
    53  
    54  //NewPooledRunnerConfig creates a new Pooled config, looks for environment variables to override default values
    55  func NewPooledRunnerConfig() *runner.PooledConfig {
    56  	return &runner.PooledConfig{NumWorkers: GetRunnerWorkers(), WorkQueueSize: GetRunnerQueueSize()}
    57  }