1 | _ = require 'lodash'
|
2 | Server = require './src/server'
|
3 | UUID = require 'uuid'
|
4 |
|
5 | class Command
|
6 | constructor: ->
|
7 | @serverOptions =
|
8 | port: parseInt process.env.PORT || 80
|
9 | aliasServerUri: process.env.ALIAS_SERVER_URI
|
10 | redisUri: process.env.REDIS_URI
|
11 | cacheRedisUri: process.env.CACHE_REDIS_URI
|
12 | namespace: process.env.NAMESPACE || 'meshblu'
|
13 | jobTimeoutSeconds: parseInt process.env.JOB_TIMEOUT_SECONDS || 30
|
14 | maxConnections: parseInt process.env.CONNECTION_POOL_MAX_CONNECTIONS || 100
|
15 | disableLogging: process.env.DISABLE_LOGGING == "true"
|
16 | jobLogRedisUri: process.env.JOB_LOG_REDIS_URI
|
17 | jobLogQueue: process.env.JOB_LOG_QUEUE
|
18 | jobLogSampleRate: parseFloat process.env.JOB_LOG_SAMPLE_RATE
|
19 | jobLogSampleRateOverrideUuids: _.split process.env.JOB_LOG_SAMPLE_RATE_OVERRIDE_UUIDS, ','
|
20 | requestQueueName: process.env.REQUEST_QUEUE_NAME
|
21 | responseQueueBaseName: process.env.RESPONSE_QUEUE_BASE_NAME
|
22 |
|
23 | panic: (error) =>
|
24 | console.error error.stack
|
25 | process.exit 1
|
26 |
|
27 | run: =>
|
28 | @panic new Error('Missing environment variable: ALIAS_SERVER_URI') unless @serverOptions.aliasServerUri?
|
29 | @panic new Error('Missing environment variable: REDIS_URI') if _.isEmpty @serverOptions.redisUri
|
30 | @panic new Error('Missing environment variable: CACHE_REDIS_URI') if _.isEmpty @serverOptions.cacheRedisUri
|
31 | @panic new Error('Missing environment variable: JOB_LOG_REDIS_URI') if _.isEmpty @serverOptions.jobLogRedisUri
|
32 | @panic new Error('Missing environment variable: JOB_LOG_SAMPLE_RATE') unless @serverOptions.jobLogSampleRate?
|
33 | @panic new Error('Missing environment variable: JOB_LOG_QUEUE') if _.isEmpty @serverOptions.jobLogQueue
|
34 | @panic new Error('Missing environment variable: REQUEST_QUEUE_NAME') if _.isEmpty @serverOptions.requestQueueName
|
35 | @panic new Error('Missing environment variable: RESPONSE_QUEUE_BASE_NAME') if _.isEmpty @serverOptions.responseQueueBaseName
|
36 |
|
37 | responseQueueId = UUID.v4()
|
38 | @serverOptions.responseQueueName = "#{@serverOptions.responseQueueBaseName}:#{responseQueueId}"
|
39 |
|
40 | server = new Server @serverOptions
|
41 | server.run (error) =>
|
42 | return @panic error if error?
|
43 |
|
44 | {address,port} = server.address()
|
45 | console.log "Server listening on #{address}:#{port}"
|
46 |
|
47 | process.on 'SIGTERM', =>
|
48 | console.log 'SIGTERM caught, exiting'
|
49 | return process.exit 0 unless server?.stop?
|
50 | server.stop =>
|
51 | process.exit 0
|
52 |
|
53 | command = new Command()
|
54 | command.run()
|