by Eunmin Kim
RabbitMQ를 구독하는 애플리케이션을 만들고 싶습니다.
Clojure RabbitMQ 라이브러리인 Langohr 의존성을 추가합니다.
[com.novemberain/langohr "5.0.0"]
구독할 RabbitMQ 큐에 연결 하기 위해 채널을 엽니다.
(require '[langohr.core :as rmq])
(require '[langohr.channel :as lch])
;; default config {:host "localhost", :port 5672, :username "guest", :vhost "/", :password "guest"}
(def conn (rmq/connect))
(def channel (lch/open conn))
구독한 큐에 있는 메시지를 처리할 핸들러를 만들어 줍니다.
(require '[langohr.basic :refer [ack nack]])
(defn message-handler [channel {:keys [content-type delivery-tag type] :as meta} ^bytes payload]
(println (String. payload "UTF-8")
(ack channel delivery-tag)))
앞에서 만든 메시지 헨들러를 이용해 큐를 구독합니다.
(require '[langohr.consumers :as lc])
(lc/subscribe channel "test-queue" message-handler {:auto-ack false})
더 구독을 하지 않으려면 채널을 닫아 줍니다.
(lch/close channel)
(rmq/close conn)