arbiter-worker-0.1.0.0
arbiter-worker
Safe HaskellNone
LanguageGHC2024

Arbiter.Worker.MultiQueue

Description

Naming, sizing, and coordinated lifecycle for multiple worker pools.

Synopsis

Documentation

Source #data NamedWorkerPool (m :: Type -> Type)

A worker pool paired with its registry-derived queue name.

Source #namedWorkerPool :: forall payload (m :: Type -> Type). (EncodeJobResult (ResultOf m payload), QueueOperation m payload, RegistryAdmissionPolicies (RegistryOf m), RegistryTables (RegistryOf m)) => WorkerConfig m payload -> NamedWorkerPool m

Name a pool from its payload's registry entry.

Source #shutdownPools :: forall m (m' :: Type -> Type). MonadIO m => [NamedWorkerPool m'] -> m ()

Signal graceful shutdown to every pool atomically.

Source #runWorkerPools :: (MonadUnliftIO m, RegistryTables (RegistryOf m)) => [NamedWorkerPool m] -> m ()

Run the pools selected by ARBITER_ENABLED_QUEUES, or every configured pool when it is unset.

Source #runSelectedWorkerPools :: MonadUnliftIO m => [Text] -> [NamedWorkerPool m] -> m ()

Run only named pools. A pool that exits winds down its peers. The first failure among them is rethrown after every peer has been joined.

Source #poolConfigForWorkers :: forall (m :: Type -> Type). RegistryTables (RegistryOf m) => [NamedWorkerPool m] -> IO PoolConfig

A single-stripe pool sized at twice the enabled worker count plus one for the listener, with a minimum size of three.