File tree Expand file tree Collapse file tree 2 files changed +76
-0
lines changed
Expand file tree Collapse file tree 2 files changed +76
-0
lines changed Original file line number Diff line number Diff line change 1+ {-# OPTIONS -XOverloadedStrings #-}
2+
3+ import Network.AMQP
4+ import qualified Data.ByteString.Lazy.Char8 as BL
5+ import qualified Data.Text as DT
6+ import System.Environment (getArgs )
7+ import Text.Printf
8+
9+ logsExchange = " direct_logs"
10+
11+ main :: IO ()
12+ main = do
13+ args <- getArgs
14+ let body = bodyFor args
15+ severity = severityFor args
16+ conn <- openConnection " 127.0.0.1" " /" " guest" " guest"
17+ ch <- openChannel conn
18+
19+ declareExchange ch newExchange {exchangeName = logsExchange,
20+ exchangeType = " direct" ,
21+ exchangeDurable = False }
22+ publishMsg ch logsExchange (DT. pack severity)
23+ (newMsg {msgBody = (BL. pack body),
24+ msgDeliveryMode = Just NonPersistent })
25+
26+ putStrLn $ printf " [x] Sent '%s'" (body)
27+ closeConnection conn
28+
29+
30+ bodyFor :: [String ] -> String
31+ bodyFor [] = " Hello, world!"
32+ bodyFor xs = unwords $ tail xs
33+
34+
35+ severityFor :: [String ] -> String
36+ severityFor [] = " info"
37+ severityFor xs = head xs
Original file line number Diff line number Diff line change 1+ {-# OPTIONS -XOverloadedStrings #-}
2+
3+ import Network.AMQP
4+ import qualified Data.ByteString.Lazy.Char8 as BL
5+ import qualified Data.Text as DT
6+ import System.Environment (getArgs )
7+ import Text.Printf (printf )
8+ import Control.Monad (forM )
9+
10+ logsExchange = " direct_logs"
11+
12+ main :: IO ()
13+ main = do
14+ conn <- openConnection " 127.0.0.1" " /" " guest" " guest"
15+ ch <- openChannel conn
16+ severities <- getArgs
17+
18+ declareExchange ch newExchange {exchangeName = logsExchange,
19+ exchangeType = " direct" ,
20+ exchangeDurable = False }
21+ (q, _, _) <- declareQueue ch newQueue {queueName = " " ,
22+ queueAutoDelete = True ,
23+ queueDurable = False }
24+ forM severities (\ s -> bindQueue ch q logsExchange (DT. pack s))
25+
26+ putStrLn " [*] Waiting for messages. to Exit press CTRL+C"
27+ consumeMsgs ch q Ack deliveryHandler
28+
29+ -- waits for keypresses
30+ getLine
31+ closeConnection conn
32+
33+ deliveryHandler :: (Message , Envelope ) -> IO ()
34+ deliveryHandler (msg, metadata) = do
35+ putStrLn $ printf " [x] %s:%s" (DT. unpack $ envRoutingKey metadata) body
36+ putStrLn $ " [x] Done"
37+ ackEnv metadata
38+ where
39+ body = (BL. unpack $ msgBody msg)
You can’t perform that action at this time.
0 commit comments