September 18th, 2016
(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: email@example.com
At Celolot I wrote a bunch of Clojure apps that talked to each other over Redis thanks to Carmine/Nippy. We passed around maps, and each app checked a field in the map to see if the map was a message that it was suppose to respond to.
ZeroMQ does not have a first class notion of a topic, yet it does have a first class concept of a subscription filter. Subscription filters let you decide which messages you are interested in receiving based on the prefix match on any otherwise opaque message. This feature combined with the support for multi-frame messages allowed us to easily and elegantly express the same semantics as Kafka topics in the context of our requirements. The first frame of every message contains the logical name of the stream, and the second frame the actual log record. We then configure ZeroMQ to do an exact match on the first frame so that we only receive the entries we care about.