antiope-sqs 7.5.2 → 7.5.3
raw patch · 2 files changed
+39/−3 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Antiope.SQS: lazyReadAllMessages :: (MonadUnliftIO m, HasEnv env) => env -> QueueUrl -> ConsumerMode -> m [Message]
+ Antiope.SQS: lazyReadAllMessages' :: (MonadUnliftIO m, HasEnv env) => env -> ReceiveMessage -> ConsumerMode -> m [Message]
Files
- antiope-sqs.cabal +1/−1
- src/Antiope/SQS.hs +38/−2
antiope-sqs.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4 name: antiope-sqs-version: 7.5.2+version: 7.5.3 synopsis: Please see the README on Github at <https://github.com/arbor/antiope#readme> description: Please see the README on Github at <https://github.com/arbor/antiope#readme>. category: Services
src/Antiope/SQS.hs view
@@ -14,6 +14,8 @@ , keepAliveMessage , forAllMessages , forAllMessages'+ , lazyReadAllMessages+ , lazyReadAllMessages' , defaultReceiveMessage -- * Re-exports@@ -23,7 +25,7 @@ import Control.Lens import Control.Monad (forM, forM_, join, void)-import Control.Monad.IO.Unlift (MonadUnliftIO)+import Control.Monad.IO.Unlift (MonadUnliftIO, askUnliftIO, liftIO, unliftIO) import Control.Monad.Loops (unfoldWhileM) import Control.Monad.Trans (lift) import Data.Coerce (coerce)@@ -37,7 +39,8 @@ import Antiope.SQS.Types -import qualified Network.AWS as AWS+import qualified Network.AWS as AWS+import qualified System.IO.Unsafe as IO defaultReceiveMessage :: QueueUrl -> ReceiveMessage defaultReceiveMessage (QueueUrl url)@@ -138,6 +141,39 @@ -> m () forAllMessages' env recMsg mode process = forAllMessages'' env recMsg mode (const process)++-- | Reads all messages from the queue into a LAZY list.+-- This function will read the provided SQS queue one batch at a time+-- as the list is consumed.+--+-- Use 'lazyReadAllMessages'' to control the batch size.+lazyReadAllMessages :: (MonadUnliftIO m, HasEnv env)+ => env+ -> QueueUrl+ -> ConsumerMode+ -> m [Message]+lazyReadAllMessages env queue mode =+ lazyReadAllMessages' env (defaultReceiveMessage queue) mode++-- | Reads all messages from the queue into a LAZY list.+-- This function will read the provided SQS queue one batch at a time as+-- as the list is consumed.+lazyReadAllMessages' :: (MonadUnliftIO m, HasEnv env)+ => env+ -> ReceiveMessage+ -> ConsumerMode+ -> m [Message]+lazyReadAllMessages' env recMsg mode = do+ u <- askUnliftIO+ liftIO $ IO.unsafeInterleaveIO (go u)+ where+ go u = do+ msgs <- unliftIO u (runResourceT $ runAWS env (readQueue' recMsg))+ case (mode, msgs) of+ (Drain, []) -> pure []+ _ -> do+ rest <- IO.unsafeInterleaveIO (go u)+ pure (msgs ++ rest) forAllMessages'' :: (MonadUnliftIO m, HasEnv env) => env