Safe Haskell | None |
---|---|
Language | Haskell2010 |
A high throughput Session
based API for a PostgreSQL backed queue.
Synopsis
- enqueue :: Text -> Connection -> Value a -> [a] -> IO ()
- withDequeue :: Text -> Connection -> Value a -> Int -> Int -> ([a] -> IO b) -> IO b
- data PayloadId
- failures :: Connection -> Value a -> Maybe PayloadId -> Int -> IO [(PayloadId, a)]
- delete :: Connection -> [PayloadId] -> IO ()
- withDequeueWith :: forall e a b. Exception e => WithNotifyHandlers -> Text -> Connection -> Value a -> Int -> Int -> ([a] -> IO b) -> IO b
- data WithNotifyHandlers = WithNotifyHandlers {}
Documentation
:: Text | Notification channel name. Any valid PostgreSQL identifier |
-> Connection | Connection |
-> Value a | Payload encoder |
-> [a] | List of payloads to enqueue |
-> IO () |
Enqueue a list of payloads.
:: Text | Notification channel name. Any valid PostgreSQL identifier |
-> Connection | Connection |
-> Value a | Payload decoder |
-> Int | Retry count |
-> Int | Element count |
-> ([a] -> IO b) | Continuation |
-> IO b |
Wait for the next payload and process it. If the continuation throws an
exception the payloads are put back in the queue. IOError
is caught
and withDequeue
will retry up to the retry count. If withDequeue
fails
after too many retries the final exception is rethrown. If individual payloads are
are attempted more than the retry count they are set as "failed". See failures
to receive the list of failed payloads.
If the queue is empty withDequeue
will block until it recieves a notification
from the PostgreSQL server.
Listing API
Internal payload id. Used by the public api as continuation token for pagination.
:: Connection | |
-> Value a | Payload decoder |
-> Maybe PayloadId | Starting position of payloads. Pass |
-> Int | Count |
-> IO [(PayloadId, a)] |
Retrieve the payloads that have entered a failed state. See withDequeue
for how that
occurs. The function returns a list of values and an id. The id is used the starting
place for the next batch of values. If Nothing
is passed the list starts at the
beginning.
Advanced API
:: Exception e | |
=> WithNotifyHandlers | Event handlers for events that occur as |
-> Text | Notification channel name. Any valid PostgreSQL identifier |
-> Connection | Connection |
-> Value a | Payload decoder |
-> Int | Retry count |
-> Int | Element count |
-> ([a] -> IO b) | Continuation |
-> IO b |
A more general configurable version of withDequeue
. Unlike withDequeue
one
can specify the exception that causes a retry. Additionally event
handlers can be specified to observe the internal behavior of the
retry loop.
data WithNotifyHandlers Source #
To aid in observability and white box testing
WithNotifyHandlers | |
|
Instances
Semigroup WithNotifyHandlers Source # | |
Defined in Hasql.Queue.Internal (<>) :: WithNotifyHandlers -> WithNotifyHandlers -> WithNotifyHandlers # sconcat :: NonEmpty WithNotifyHandlers -> WithNotifyHandlers # stimes :: Integral b => b -> WithNotifyHandlers -> WithNotifyHandlers # | |
Monoid WithNotifyHandlers Source # | |
Defined in Hasql.Queue.Internal |