Skip to content

SeAT

Job Queue Flow

When a job is queued, it's instance is serialized and push into the Redis database. Horizon, our jobs orchestrator is taking care of every new jobs falling in redis and push it to an available worker from the targeted queue.

With SeAT 4, queues have been renamed and are scoped. This helps to identify load per "topic" and ensure better parallel processing of jobs.

As shown bellow, queues characters, corporations and public are dedicated to ESI jobs.

  • Characters queue is processing all jobs directly tied to a character entity (like info, assets, contracts, etc...)
  • Corporations queue is processing all jobs directly tied to a corporation entity (like killmails, jobs, wallets, etc...)
  • Public queue is processing all jobs related to universe (like stations, alliances, sovereignties, etc...)

There is a dedicated queue to handle notifications tasks (like notifying a killmail on Discord). So, you will always get your notifications as fast as possible.

The last two other queues (high and default) have a general purpose.

  • The high queue is dedicated to jobs which have a critical level (like those related to security)
  • The default queue is a bucket collecting all jobs without any other specified queue

The default (and recommended) jobs handling configuration is using auto balancing. This ensures every single queue always have a minimum of workers (1 is the default value).

Important

There are no ranking in queues, so, the high one is not most important than other in the way jobs are processing. Queue name doesn't influe on their ability to process load. So, please use high queue for really important/critical tasks only.

Flow

An editable draw.io xml to import can be found here: seat_jobs_flow.drawio