kafka-client-0.7.0.1: examples/consoleProducer.hs
{-# LANGUAGE OverloadedStrings #-}
module Main (main) where
import Control.Applicative
import Control.Monad
import qualified Data.ByteString.Char8 as B8
import System.Environment
import System.Exit
import qualified System.IO as IO
import Kafka
main :: IO ()
main = do
args <- getArgs
when (null args) $ do
putStrLn "USAGE: consoleProducer TOPIC"
exitFailure
let topic = Topic (B8.pack $ head args)
withConnection "localhost" 9092 $ \conn ->
whileM_ (not <$> IO.isEOF) $ do
line <- B8.getLine
produce conn [Produce topic 0 [line]]
whileM_ :: Monad m => m Bool -> m a -> m ()
whileM_ cond action = loop
where
loop = do
x <- cond
when x (action >> loop)