module Network.Nats.Json (
subscribe
, publish
) where
import Network.Nats (Nats, NatsSID)
import qualified Network.Nats as N
import qualified Data.Aeson as AE
publish :: AE.ToJSON a =>
Nats
-> String
-> a
-> IO ()
publish nats subject body = N.publish nats subject (AE.encode body)
subscribe :: AE.FromJSON a =>
Nats
-> String
-> (Maybe String)
-> (NatsSID
-> String
-> a
-> Maybe String
-> IO ()
)
-> IO NatsSID
subscribe nats subject queue jcallback = N.subscribe nats subject queue cb
where
cb sid subj msg repl
| Just body <- AE.decode msg = jcallback sid subj body repl
| True = return ()