Friday August 26, 2011

[Time] NameMessage
[18:31] sshirokov Any news on 2.1.9?
[18:31] sshirokov I'm getting pretty tired of dying on 2.1.7's asserts :(
[19:08] savage- hi
[19:08] savage- many zeromq + ruby/rails folks?
[19:09] savage- wonder if anyone is using zeromq in production?
[19:09] savage- and how it compares with rabbitmq in terms of performance?
[19:10] michelp savage-, not using ruby myself, but we use both rabbit and 0mq in production
[19:10] michelp comparing them is kind of like comparing apples and oranges, but in terms of sheer throughput, 0mq can handle many more messages per second
[19:11] savage- michelp: cool - is there a reason why you use both? do they compete with each other?
[19:11] savage- oh I see...
[19:11] michelp we started with rabbit, then moved to 0mq for certain problems that it fit better with
[19:11] savage- michelp: when would you use one over the other?
[19:12] michelp well, personally if i were re-engineering everything from scratch I would use 0mq for everything
[19:12] michelp what rabbit does for you is act as a central store for messages, this has made certain patterns easy for us, for example we can shut down consumers and let rabbit queue up the messages, that's part of what it does built-in
[19:12] michelp you can do that with 0mq, but you have to roll some of your own code to do it
[19:13] savage- ah I see, so if there are no subscribers running, just pubilshers, what happens to the messages that you publish with zeromq?
[19:13] michelp rabbit has a fixed set of useful patterns, whereas 0mq is more like a toolbox, there's no limit to the patterns, but to a certain extent you have to put it together youself
[19:14] michelp savage-, what happens is up to you, the guide has some details on that:
[19:17] michelp if you search for "high water mark" or "HWM" you will see some information on what 0mq provides. You can build on top of that to provide more robust guarantees, for example you could create a 'device' or 'broker' that you send messages to that is responsible for storing them and farming them out to consumers. How that works is up to you, which is good, but the tradeoff is you have to do a bit more work
[19:17] savage- ah I see...
[19:17] savage- michelp: why would you drop rabbitmq if you had to do it over again, given that it gives you so much for free?
[19:18] michelp well, the 2 or 3 times rabbit has died on us and lost data seriously effected our confidence in it
[19:18] savage- damn
[19:18] michelp we also had a case where a consumer was causing the rabbit server to die, which in our opinion should *never* be possible
[19:18] savage- what about activemq? is it similar to rabbitq?
[19:18] savage- rabbitmq?
[19:18] michelp no idea
[19:19] michelp also, i personally find AMQP to be a very complex protocol, which makes me suspicious right from the start
[19:19] savage- yes, it's VERY complicated.
[19:19] savage- exchanges, binding, etc.
[19:19] savage- the ruby zeromq library is so simple.
[19:20] michelp i still have to go back and reread rabbit documentation to get the picture right in my head every time i touch that code
[19:20] savage- lol
[19:20] savage- what are you guys using for your app? java
[19:20] savage- ?
[19:20] michelp if you're new to 0mq the best thing to do is go through the guide, and try the examples
[19:20] michelp python
[19:21] michelp there should be some pretty complete ruby examples in the guide as well
[19:21] savage- yup, I am going through this:
[19:22] savage- it's awesome that zeromq doesn't have a standalone server process, like rabbitmq
[19:22] savage- it's like all peer-to-peer
[19:22] michelp yep, although nothing stops you from writing that server yourself, for many patterns it's quite useful
[19:23] michelp it's up to you
[19:23] michelp which i like :)
[19:23] savage- yes, very cool
[19:24] michelp also the people in this channel are very helpful, and it seems like most of the core devs are here as well, so it's quite easy to get guidance
[19:24] michelp although, you may have to get used to the answer "read the guide" a lot :)
[19:24] savage- hehehe, that's totally fair :-)
[19:24] michelp the guide is very thorough
[19:24] savage- thanks for all your help michelp
[19:24] michelp sure np