Rodrigo,

We went with RabbitMQ over ZeroMQ mostly because we were more familiar with 
it. As I understand it, ZeroMQ is less of a message-queueing system and 
more "sockets on steroids." Which one is best will depend pretty strongly 
on your particular usecase.

In our case, our messages are pretty simple: they're just mongodb docIds 
plus some extra data. We use the queue the message goes into as the 
"meta-data" for the message. If a docId appears in the "word-count" queue, 
for example, the Clojure workers know to calculate the avg word count stats 
for the given document.

For us, security comes in the form of username/password authentication for 
RabbitMQ, plus blocking the ports to everyone save the Ruby and Clojure 
servers that need to communicate with it. If we were firing off messages 
with more sensitive data (e.g., passwords), we'd look at encryption then.

The performance of the pipeline so far has been great. Ruby can offload the 
heavy processing to Clojure, so the user can continue working on the site 
without interruption. Clojure gets to focus on just the processing side, so 
we can optimize and scale it separately.

As for portability, we started with everything on Heroku, but we've been 
slowly migrating to aws as our needs scale up. Our configuration makes this 
really easy: we can move the rabbitmq piece over one week, then the clojure 
the next, without changing anything but a few lines in a config file.

Ron

On Monday, September 9, 2013 7:47:54 AM UTC-7, rdelcueto wrote:
>
> Hey Ron,
> Thanks for your response. Digging deeper into my question...
>
> When I read about the Torquebox Immutant duet, I thought it was 
> particularly interesting solution, because it was fairly easy to deploy and 
> both processes would live inside a JVM environment. I was impressed by how 
> Clojure data structures mapped to Ruby structures and vice-versa, it seemed 
> to provide a very clean and idiomatic messaging platform. Plus it would 
> provide tools for caching, clustering, and what not. Still I wasn't very 
> keen on the JRuby subject, since It's known to have compatibility issues 
> with certain gems.
>
> Yesterday while researching on the subject I found about ZeroMQ. Do you 
> have any particular reason to use RabbitMQ over other messaging libraries? 
> Are there any caveats to your interop model?
> How portable is deploying a site using a messaging solution such as 
> RabbitMQ?
>
> I also found out about Google's Protocol Buffers, they seemed like a 
> lightweight solution to pass language agnostic data structures through the 
> messaging infrastructure.
> Do messages need to be encapsulated somehow, or is this actually 
> unnecessary? How it's done in your case?
>
> Regarding security and sensible information interop; Should messages be 
> encrypted? Should they be encrypted as a whole message or partially (only 
> sensible data)?
> What are the performance implications of this pipeline? Is the overhead 
> and footprint of such setup (Ruby + Messaging Broker + ClojureJVM) big 
> enough, for it to be worth thinking on writing everything in Clojure (using 
> the Luminus framework)?
>
> On Monday, September 9, 2013 8:10:41 AM UTC-5, Ron Toland wrote:
>>
>> At Rewryte, we use Rails for the web frontend and Clojure for the data 
>> processing backend for exactly the reasons you described.
>>
>> We use RabbitMQ to communicate between the two. This maintains separation 
>> between the two apps (no JRuby required), and lets us scale them both 
>> independently, while taking advantage of each language/framework's 
>> strengths.
>>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to