packages feed

nri-kafka-0.4.0.1: scripts/pause-resume-bug/Producer.hs

{-# LANGUAGE DisambiguateRecordFields #-}

module Producer where

import Conduit
import qualified Environment
import qualified Kafka
import Message
import System.Environment (setEnv)
import Prelude (IO, error, pure)

main :: IO ()
main = do
  setEnv "KAFKA_COMPRESSION_CODEC" "Gzip"
  settings <- Environment.decode Kafka.decoder
  logHandler <- Platform.silentHandler

  putTextLn "Sending messages..."

  Conduit.withAcquire (Kafka.handler settings) <| \handler -> do
    [1 .. 300]
      |> List.map
        ( \id -> do
            let msg =
                  Kafka.emptyMsg "pause-resume-bug"
                    |> Kafka.addPayload Message {id}
                    |> Kafka.addKey "a-partition-key"
            Kafka.sendSync handler msg
        )
      |> Task.sequence
      |> Task.attempt logHandler
      |> andThen fromResult

fromResult :: Result Text a -> IO ()
fromResult (Ok _) = pure ()
fromResult (Err err) = error (Text.toList err)