Queue Service

Purpose

Provides a generic queue service for the entire CI Engine. Common uses are:

  • Task queues to manage work between a service accepting requests and a pool of workers to actually execute the request.
  • Progress queues to provide progress updates between services.

Usage

Task Queues

The service and its pool of workers share a named queue defined in the service charm configuration files.

Progress Queues

The queue is created by the calling service and the details are passed to the callee. For example, if the Lander needs to receive progress from the Image Builder, the Lander creates the queue and passes it to the Image Builder as part of the Image Builder API.

Updates are sent every 60 seconds until the task being tracked is complete, at which point it can stop sending updates.

If no progress is received by the caller with the span of 10 updates, the caller can declare the callee unresponsive and can take action to retry or fail the original request.

Design

The RabbitMQ service is used.

A library API is provided to facilitate access.

API

TBD