Easing Simple Message-oriented Middleware Tasks with Clojure (and Java)
Detailed test results are available as well: http://ruedigergad.github.io/bowerick/test-results/html/
On my website, I wrote some blog posts about bowerick:
https://ruedigergad.com/category/libs/bowerick/
In these blog posts, I make announcements about bowerick and discuss selected aspects of bowerick in more detail.
; Can also be run in: lein repl
(require '[bowerick.jms :as jms])
(def url "tcp://127.0.0.1:61616")
(def destination "/topic/my.test.topic")
(def brkr (jms/start-broker url))
(def consumer (jms/create-json-consumer url destination (fn [data] (println "Received:" data))))
(def producer (jms/create-json-producer url destination))
(producer "foo")
; nilReceived: foo
(producer '(1 7 0 1))
; nilReceived: (1 7 0 1)
(jms/close producer)
(jms/close consumer)
(jms/stop brkr)
; (quit)
; Can also be run in: lein repl
(require '[bowerick.jms :as jms])
(def urls ["tcp://127.0.0.1:61616" "stomp://127.0.0.1:61617" "ws://127.0.0.1:61618" "mqtt://127.0.0.1:61619"])
(def destination "/topic/my.test.topic")
(def brkr (jms/start-broker urls))
(def consumers (doall (map-indexed (fn [idx url] (jms/create-json-consumer url destination (fn [data] (Thread/sleep (* 100 idx)) (println "Received" url data)))) urls)))
(def producer (jms/create-json-producer (first urls) destination))
(producer "foo")
; Received tcp://127.0.0.1:61616 foo
; Received stomp://127.0.0.1:61617 foo
; Received ws://127.0.0.1:61618 foo
; Received mqtt://127.0.0.1:61619 foo
(jms/close producer)
(doseq [consumer consumers] (jms/close consumer))
(jms/stop brkr)
; (quit)
; Can also be run in: lein repl
(require '[bowerick.jms :as jms])
(def url "tcp://127.0.0.1:61616")
(def destination "/topic/my.test.topic")
(def brkr (jms/start-broker url))
(def pool-size 3)
(def consumer (jms/create-json-consumer url destination (fn [data] (println "Received:" data)) pool-size))
(def producer (jms/create-json-producer url destination pool-size))
(producer "foo")
(producer [1 7 0 1])
(producer 42.0)
; nilReceived: foo
; Received: [1 7 0 1]
; Received: 42.0
(jms/close producer)
(jms/close consumer)
(jms/stop brkr)
; (quit)
API docs are available: http://ruedigergad.github.io/bowerick/doc/
OpenWire via TCP (with optional client authentication)
ssl://127.0.0.1:42425
ssl://127.0.0.1:42425?needClientAuth=true
STOMP via TCP (with optional client authentication)
stomp+ssl://127.0.0.1:42423
stomp+ssl://127.0.0.1:42423?needClientAuth=true
STOMP via WebSockets (with optional client authentication)
wss://127.0.0.1:42427
wss://127.0.0.1:42427?needClientAuth=true
MQTT via TCP (with optional client authentication)
mqtt+ssl://127.0.0.1:42429
mqtt+ssl://127.0.0.1:42429?needClientAuth=true
OpenWire via TCP
tcp://127.0.0.1:42424
OpenWire via UDP
udp://127.0.0.1:42426
STOMP via TCP
stomp://127.0.0.1:42422
STOMP via WebSocket
ws://127.0.0.1:42428
MQTT via TCP
mqtt://127.0.0.1:42430
Placeholders Used in the Cheat Sheet Examples
(def server-url "tcp://127.0.0.1:42424")
(def destination-description "/topic/my.topic.name")
(def pool-size 10)
(defn callback-fn [data] (println data))
(create-producer server-url destination-description pool-size)
(create-consumer server-url destination-description callback-fn pool-size)
(create-json-producer server-url destination-description pool-size)
(create-json-consumer server-url destination-description callback-fn pool-size)
(create-carbonite-producer server-url destination-description pool-size)
(create-carbonite-consumer server-url destination-description callback-fn pool-size)
(create-carbonite-lzf-producer server-url destination-description pool-size)
(create-carbonite-lzf-consumer server-url destination-description callback-fn pool-size)
(create-nippy-producer server-url destination-description pool-size)
(create-nippy-consumer server-url destination-description callback-fn pool-size)
(create-nippy-producer server-url destination-description pool-size {:compressor taoensso.nippy/lz4-compressor})
(create-nippy-producer server-url destination-description pool-size {:compressor taoensso.nippy/snappy-compressor})
(create-nippy-producer server-url destination-description pool-size {:compressor taoensso.nippy/lzma2-compressor})
(create-nippy-lzf-producer server-url destination-description pool-size)
(create-nippy-lzf-consumer server-url destination-description callback-fn pool-size)
Copyright © 2016 - 2018 Ruediger Gad
Copyright © 2014 - 2015 Frankfurt University of Applied Sciences
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close