packages feed

faktory-1.0.1.1: examples/consumer/Main.hs

module Main (main) where

import Prelude

import Control.Exception.Safe
import Data.Aeson
import Faktory.Settings
import Faktory.Worker
import GHC.Generics

-- | Must match examples/producer
newtype Job = Job { jobMessage :: String }
  deriving stock Generic
  deriving anyclass FromJSON

main :: IO ()
main = do
  putStrLn "Starting consumer loop"
  settings <- envSettings
  runWorker settings $ \job -> do
    let message = jobMessage job

    if message == "BOOM"
      then throwString "Producer exception: BOOM"
      else putStrLn message