On Tue, Dec 18, 2012 at 10:10 PM, Mark Hahn <[email protected]> wrote:
> I apologize if I repeat myself but here are my detailed requirements ...

    From the below requirements I guess that the best option so far
seems to be ZeroMQ, but see below...


> 0) Installable with npm

    ZeroMQ is written in C, but it has native bindings for NodeJS.


> 1) Very high bandwidth, my app can use as much as you give it

    It fills this role. It is able to saturate GiB network. (There are
benchmarks even with Infiniband link layer ~= 40GiB.)


> 2) Multi-writers, including browsers and other servers

    It does this (use PUSH/PULL sockets). For browsers there are some
"devices" (as they're called in the ZeroMQ terminology) that adapt
between HTTP and ZeroMQ (anyway they're trivial to write).


> 3) One reader on a single server

    It does this. The reader with the ZeroMQ library is also the
"server", or you could introduce another ZeroMQ "device". (See their
guide for examples and other possibilities.)

    Moreover it opens up the possibility of multiple readers with
writers going round-robin towards readers, or even publish-subscribe
patterns.


> 4) No channels are needed, my data encapsulates any addressing

    ZeroMQ is dead simple. You can see it as a "fancy" datagram socket
if you want. (Actually as said ZeroMQ is a communications library.)


> 5) Ordered data delivery would be nice but I could handle order
> problems in my code

    It does have ordered delivery.


> 6) Reliable delivery would be nice not not critical.  End use of data
> is data-mining to be read by humans and I can show the human an
> indication data is missing.  It would make my app look bad though.

    It doesn't solve "hard reliability". (I mean in general it is as
reliable as your network, and if you use TCP you're going to lose only
those messages until the connection is reestablished. There is no
out-of-the box persistence; it used to have it but it was
deprecated...)


> The solutions I have studied seem to be overkill for my needs
> (rabbitMQ) or more complex enterprise solutions that I'd not want each
> user to have to install.

    ZeroMQ is "zero" complexity. :) (Actually it allows you to build
as complex solutions as you want, but this library is just a building
block for messaging middlewares or distributed systems.)


> So unless any of the other solutions mentioned fill the bill, I will
> proceed with rolling my own using socket.io and homemade storage.

    Just take a look at ZeroMQ, as it'll solve almost 90% of your
communication requirements. The other 10% is the HTTP or WebSocket
bridge which should prove trivial to implement (if they aren't
implemented yet.)


    If you have more in-depth ZeroMQ questions feel free to ask also
on their mailing list. (Or cross post this thread there also.)

    Ciprian.


> P.S.  I have discovered 3 or 4 messaging-related projects at apache.
> That is weird.

    :) What is even weirder is that most of them are written in Java. :)

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to