Configuring the Queue Manager in Ambience/Repertoire 202x

There is a queue management configuration in etc/application.conf file of the Ambience 202x installation.

Below explains how the queue manager works:
YmjPnCUgsIDiP476TfSQVqmvYWxvOrGJeg

  1. The queue manager in the Ambience server receives all incoming requests.
  2. Based on the above example, the queue manager receives three requests.
  3. The first request is assigned to the first engine, the second request to the second engine.
  4. The third request waits in the queue manager and will be assigned to either the first or second engine, whichever finishes first.
  5. Subsequent incoming requests are received by the queue manager and assigned to an available engine.

Accessing the Queue Monitor module in the Ambience web console shows the current state of all jobs in the queue (including completed jobs, which are retained for a configurable period of time in a Completed state).

However, there are a few important points to note. The queue and its engines only apply to jobs. Not every ETL is run as a job. RML and DocX template rendering are always jobs.

  • ETL run from an HTTP endpoint is a job.
  • ETL run from a scheduler is NOT a job. It is run on schedule, it does not sit in the queue waiting maybe a long time.
  • ETL run from the ETL designer is NOT a job. It is run on demand by the developer - usually this doesn’t happen on a production system.
  • ETL run from Form submissions is NOT a job - we can’t afford to wait behind a long report before we update the user’s form.
  • ETL run by Datasets is NOT a job - we can’t afford to not update the dashboard because we are waiting for a long report.

​In summary, only ETL run from an HTTP endpoint is considered as a Job and placed in the Job Queue. All other ETL uses are run immediately. The Ambience server can be configured to have X number of engines and one queue manager that assigns requests in queue to the next available engine.

​Factors to consider when configuring the Ambience server would be to determine if it will be executing more jobs (is there a need for more engines?) or ETLs and ensure the host system has enough resources for both jobs and ETLs to run concurrently.