Skip to content
Permalink
Fetching contributors…
Cannot retrieve contributors at this time
41 lines (37 sloc) 1.47 KB
(ns clojurewerkz.langohr.examples.recovery.example1
(:gen-class)
(:require [langohr.core :as rmq]
[langohr.channel :as lch]
[langohr.queue :as lq]
[langohr.exchange :as lx]
[langohr.consumers :as lc]
[langohr.basic :as lb])
(:import java.io.IOException
com.rabbitmq.client.AlreadyClosedException))
(defn message-handler
[ch {:keys [content-type delivery-tag type] :as meta} ^bytes payload]
(println (format "[consumer] Received a message: %s"
(String. payload "UTF-8"))))
(defn start-consumer
[ch ^String q]
(lq/declare ch q {:exclusive false :auto-delete false})
(lc/subscribe ch q message-handler {:auto-ack true}))
(defn -main
[& args]
(let [conn (rmq/connect {:automatically-recover true :automatically-recover-topology false})
ch (lch/open conn)
q "langohr.examples.recovery.example1.q"
x ""]
(println (format "[main] Connected. Channel id: %d" (.getChannelNumber ch)))
(start-consumer ch q)
(rmq/on-recovery ch (fn [ch]
(println "[main] Channel recovered. Recovering topology...")
(start-consumer ch q)))
(while true
(Thread/sleep 1000)
(try
(lb/publish ch x q "hello")
(catch AlreadyClosedException ace
(comment "Happens when you publish while the connection is down"))
(catch IOException ioe
(comment "ditto"))))))
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.