Listen for messages
This commit is contained in:
parent
ce3773b3ee
commit
c0dbc5f0d2
@ -34,6 +34,7 @@ library
|
||||
, aeson
|
||||
, lens
|
||||
, lens-aeson
|
||||
, transformers
|
||||
hs-source-dirs: src
|
||||
default-language: Haskell2010
|
||||
|
||||
|
@ -1,4 +1,39 @@
|
||||
{-# LANGUAGE RecordWildCards #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module MyLib (someFunc) where
|
||||
import System.Environment (lookupEnv)
|
||||
import Control.Monad.Trans.Maybe (MaybeT(..))
|
||||
import Network.AMQP
|
||||
import qualified Data.Text as T
|
||||
import Data.Text (Text)
|
||||
import Control.Exception (bracket)
|
||||
import Control.Concurrent (newEmptyMVar, readMVar)
|
||||
import Control.Monad (void)
|
||||
|
||||
data AMQP = AMQP
|
||||
{ host :: String
|
||||
, vhost :: Text
|
||||
, username :: Text
|
||||
, password :: Text
|
||||
}
|
||||
|
||||
getAMQP :: IO (Maybe AMQP)
|
||||
getAMQP = runMaybeT $
|
||||
AMQP <$> lookupEnvM "AMQP_HOST" <*> lookupEnvMText "AMQP_VHOST" <*> lookupEnvMText "AMQP_USER" <*> lookupEnvMText "AMQP_PASS"
|
||||
where
|
||||
lookupEnvM = MaybeT . lookupEnv
|
||||
lookupEnvMText = fmap T.pack . lookupEnvM
|
||||
|
||||
someFunc :: IO ()
|
||||
someFunc = putStrLn "someFunc"
|
||||
someFunc = do
|
||||
Just AMQP{..} <- getAMQP
|
||||
let rabbitConnect = openConnection host vhost username password
|
||||
bracket rabbitConnect closeConnection $ \conn -> do
|
||||
chan <- openChannel conn
|
||||
qos chan 0 1 False
|
||||
declareQueue chan newQueue {queueName="reddit_tags"}
|
||||
bindQueue chan "reddit_tags" "reddit_posts" "key"
|
||||
consumeMsgs chan "reddit_tags" Ack $ \(msg, env) -> do
|
||||
print msg
|
||||
ackEnv env
|
||||
void getLine
|
||||
|
Loading…
Reference in New Issue
Block a user