consumers-2.2.0.0: Concurrent PostgreSQL data consumers

Safe HaskellNone
LanguageHaskell2010

Database.PostgreSQL.Consumers.Components

Synopsis

Documentation

runConsumer :: (MonadBaseControl IO m, MonadLog m, MonadMask m, Eq idx, Show idx, FromSQL idx, ToSQL idx) => ConsumerConfig m idx job -> ConnectionSourceM m -> m (m ()) Source #

Run the consumer. The purpose of the returned monadic action is to wait for currently processed jobs and clean up. This function is best used in conjunction with finalize to seamlessly handle the finalization.

spawnListener :: (MonadBaseControl IO m, MonadMask m) => ConsumerConfig m idx job -> ConnectionSourceM m -> MVar () -> m ThreadId Source #

Spawn a thread that generates signals for the dispatcher to probe the database for incoming jobs.

spawnMonitor :: forall m idx job. (MonadBaseControl IO m, MonadLog m, MonadMask m, Show idx, FromSQL idx) => ConsumerConfig m idx job -> ConnectionSourceM m -> ConsumerID -> m ThreadId Source #

Spawn a thread that monitors working consumers for activity and periodically updates its own.

spawnDispatcher :: forall m idx job. (MonadBaseControl IO m, MonadLog m, MonadMask m, MonadTime m, Show idx, ToSQL idx) => ConsumerConfig m idx job -> Bool -> ConnectionSourceM m -> ConsumerID -> MVar () -> TVar (Map ThreadId idx) -> TVar Int -> Maybe (TMVar Bool) -> m ThreadId Source #

Spawn a thread that reserves and processes jobs.