Slashdot Mirror


Open Source Message Queuing System

psicode writes "John Davies has announced AMQ, an effort at JPMorgan Chase & Co. to create an open-source message queuing system that can compete with proprietary message systems like IBM MQSeries and Tibco/RV. The announcement was made at the annual conference Web Services on Wall Street during Davies' presentation on February 1. eWeek has an article today with more details and some funny statements about Red Hat, SuSE and Sun possibly integrating AMQ into their "kernel". If JPMorgan Chase & Co. follows through with their announcement and they come up with a suitable open-source license, AMQ could become the Apache of messaging systems."

31 of 350 comments (clear)

  1. Active MQ by LordMyren · · Score: 4, Informative

    I thought that's what CodeHaus's ActiveMQ was for.

    CodeHaus rocks, even if they are overly java biased for my tastes.

    1. Re:Active MQ by jdray · · Score: 3, Informative

      I think the point behind AMQ (at least it was heavily-pointed-out in the article) is that it supports bindings for C, C++, C#, Java, etc., etc., etc. ActiveMQ seems to only support bindings for Java.

      --
      The Spoon
      Updated 6/28/2011
    2. Re:Active MQ by Anonymous Coward · · Score: 4, Informative

      IBM MQ is extremely useful becuase it goes across platforms (Windows, any type of Unix, mainframe) as well as languages (C, C++, C#, Java, perl, Cobol, etc).

      Any Java-centric system is useful to tie Java programs together, but not for firm-wide integration. The same story goes for platform-specific products. Unless your firm uses only one langauge/platform, in which case you're not likely to need queueing...

    3. Re:Active MQ by clockwise_music · · Score: 2, Informative

      At an old place of work we used SonicMQ for our messaging.

      Now to be fair, the broker itself was quite stable, and if you were just using java, I assume that everything would be ok. However we were using a bunch of different languages (legacy systems) and some of the adapters for those languages were a joke.

      It became our developer in-joke. "Why did the system go down today? Sonic". Memory leaks, random crashing, threading problems, you name it. Caused us months of bug fixing. I'm sure (hope) that things have come a long way since then.

      An open source messaging tool (that worked properly and had load balancing, etc) would be a great thing.

    4. Re:Active MQ by Asgard · · Score: 2, Informative

      XMLBlaster might be a viable alternative. It is written in java but interfaces with corba, xml-rpc and a socket protocol.

  2. "What Is Message Queuing?" by modifried · · Score: 5, Informative

    "Message queuing is a communication tool that allows applications to reliably interconnect in a distributed environment where one of the applications may or may not be available at any given time. The queue acts as a holding container for messages as they are sent between applications. The applications send messages to and read messages from queues to communicate back and forth. An application writes a message to a queue, which will then be received and processed by another application at some point determined by the receiving application. This type of communication is designed for asynchronous use where the applications involved are not waiting for an immediate response from the other end."

    From http://www.developer.com/net/asp/article.php/32979 11

    1. Re:"What Is Message Queuing?" by Profane+MuthaFucka · · Score: 4, Informative

      That little word "reliably" is more important than the blurb above states. Unlike some messaging systems, MQ will either deliver your message, or will let you know that it did not deliver your message. There is no such things as sending a note off into the wild blue yonder, only to have it mysteriously disappear without a trace.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    2. Re:"What Is Message Queuing?" by easter1916 · · Score: 2, Informative
      Asynchronous connection precludes reliability. If there is no receiver waiting, there is no gurantee that the message will get to the recipient. At best, the sender will get a bounce message.
      Why is that? An async message can be sent to a JMS topic with a durable subscriber... just because the subscriber is offline doesn't mean the message isn't delivered. It's queued for delivery until the subscriber is online again, and the message is removed from JMS when the client explicitly acknowledges receipt.
    3. Re:"What Is Message Queuing?" by AusG4 · · Score: 4, Informative

      The message queuing they're talking about is code centric asynchronous message sending in either publish/subscribe or peer-to-peer systems. It's for when one library of code (say, manufacturing control) needs to relay an XML message (or Java object serialization, or whatever) to another library of code (say, procurement) to tell it to execute additional logic. Human beings, save for debugging purposes, never actually read the messages and indeed, many times the messages aren't even really human readable.

      So, no, not really like SMTP. Though SMTP is, I guess, a loose metaphor for how MQ servers work. That said, Exchange has nothing to do with it. The SMTP/POP3/IMAP model is just a little too much overhead for most message queue applications.

      Of course, the real problem with your statement is that asynchronous messaging doesn't in fact preclude reliability, and indeed, the word asynchronous/synchronous and reliability are more or less completely different topics and wholly unrelated.

      Most MQ servers persist undeliverable messages until such time as the destination peer (or the whole of the registered subscriber list) is available and ack's receipt of the message in question. All "asynchronous" means is that library A can send a message and continue on without ever caring about -when- the message is delivered.

      Using the manufacturing/procurement example again, you can see why it would be stupid for manufacturing to walk their ordering message over to procurement, then wait around for the mail clerk to show up, take the message, and acknowledge it's been received. This would be a "synchronous" message transmission. Surely, it's easier to just leave it in an "inbox" for the clerk to pick up later (send the message asynchronously).

      As for reinventing the wheel, I largely agree. Most large scale applications are being rolled out in J2EE or .NET, both of which offer message queuing (J2EE having tons from many different vendors - we use OpenJMS a lot in our shop).

      The only thing I can see as being beneficial is a new MQ implemented with interaction entirely in XML-RPC, etc ... as this would allow J2EE/.NET/PHP/whatever apps to use it regardless of platform.

      --
      bash-3.00$ uname -a
      SunOS panda 5.10 Generic sun4u sparc SUNW,Ultra-2
    4. Re:"What Is Message Queuing?" by slugg3r · · Score: 3, Informative

      Calling general messaging akin to SMTP is a bit far fetched at least :) Elements of messaging systems now include: a. Pub/Sub (how would SMTP support this?) b. Point to point c. Guaranteed delivery (at least once, at most once etc semantics). Associated persistence strategies need to be employed d. Message Routing e. Security f. Business rules g. Transformations h. Multiple protocol support i. Interfaces for multiple languages I have left out a couple I'm sure, but this is where ESB is going today on the functional side. Putting in clustering, ease of management and performance visibility in the mix, we have a rather complex system. I think opensource needs a high volume enterprise class messaging system badly and can't wait for one. Ok, done pontificating for now

    5. Re:"What Is Message Queuing?" by ckaminski · · Score: 3, Informative

      Yes. It offers either Guaranteed delivery, or guaranteed failure, something email does not do.

    6. Re:"What Is Message Queuing?" by hpp · · Score: 2, Informative

      MQ does do store-and-forward. It puts a message on a dead-letter queue (DLQ) if it is certain that a message cannot be delivered - i.e. if the destination queue on the remote system doesn't accept a message of the relevant size, or doesn't allow the user write permission. If the target queue is full, the system will normally pause and try to re-deliver (this can be configured).

      The DLQ is essential becuase the store-and-forward system delivers messages in order - so a single stuck message might block a communications flow.

      Finally, messages on the DLQ include the complete origianl delivery info. So you can fix the undelrying problem and redeliver. I have a perl script of 100 lines to do so... not rocket science.

  3. Re:Jabber? by Anonymous Coward · · Score: 1, Informative

    Since everyone else is laughing at you, I'll tell you why.

    Message Queueing != Instant Messaging. RTFM luser.

  4. Re:Messaging = IMing? by jdray · · Score: 1, Informative

    Might I suggest exercising your Google skillz. Try these search terms: message queuing MQSeries MSMQ Java MQ what is a message queue?

    --
    The Spoon
    Updated 6/28/2011
  5. Re:Hasn't REST etc trumped these? by Anonymous Coward · · Score: 1, Informative
    You mean like every properly configured MTA since the 70s?

    Ever since sendmail, email protocols did all the store&forward & configurable retrys & multiple routes & failure-messages back to the source for error conditions, etc. that these messenging systems had. Why not use them?

  6. Re:Messaging = IMing? by jdray · · Score: 2, Informative

    Crap. In my rush to be a smart ass, I forgot to select Plain Old Text. Message was supposed to read:

    Might I suggest exercising your Google skillz?
    Try these search terms:

    message queuing
    MQSeries
    MSMQ
    Java MQ
    what is a message queue?

    Thanks for your patience.

    --
    The Spoon
    Updated 6/28/2011
  7. Re:I thought that was sendmail? by Anonymous Coward · · Score: 4, Informative

    Message queueing is application-to-application messaging, which once-only guaranteed delivery. In addition, both the reading and writing of messages can be done transactionally, with a transaction spanning multiple queue operations.

    Think of it like a database where an application can write a record that can be read and committed by exactly one reader; however, if that reader crashes before committing, another reader can pick up that record and try to commit it, etc.

    Financial services firms use this tie their many apps together.

  8. Re:Hasn't REST etc trumped these? by hpp · · Score: 2, Informative

    Messaging is transactional, with guaranteed once-only delivery. The messaging server (queue manager) uses database technology such as write-ahead logging to achive this.

    Implementing this across TCP/IP generally requires a lon-lived conenction, as you have seperate read/write/commit/backout operations that belong together. Doing so over HTTP is theoretically feasible, but a long-lived TCP connection makes it a lot easier. Compare to databases... insert/commit isn't over HTTP either.

  9. Re:Or ObjectWeb? by Anonymous Coward · · Score: 1, Informative

    Until Joram works in *WELL* in a clustered mode, or doesn't decide to randomly die because it can't handle several million messages, I'd say Joram is a very poor excuse for a MQ option.

  10. Re:Web services by Rob+Riggs · · Score: 4, Informative

    Funny thing is, Java EJBs are CORBA. They communicate over IIOP. You can generate CORBA IDL for them. And you can connect a CORBA client to them. CORBA isn't "due any day" -- it's here.

    Those who know history (esp. of distributed object systems) are watching SOAP and "Web Services" evolve and just laughing our asses off (or crying, depending on the situation). CORBA has been simplifying while SOAP has been complexifying. SOAP is now more complicated to develop for than CORBA.

    --
    the growth in cynicism and rebellion has not been without cause
  11. Re:Jabber? by Anonymous Coward · · Score: 1, Informative

    Our turn to laugh at you...

    Jabber > Instant Messaging

    IM seems to be the only significant application on the Jabber architechture though, unless I'm missing something.

    Oh yeah, and to respond in kind: "try google next time, you insensitive clod!"

  12. Re:MQSeries by azaris · · Score: 4, Informative

    My perception of MQ is that we would be better off throwing it away and FTPing files back and forth while using SAP's job control to kick things off.

    Good luck with writing ACID transaction support, rerouting in case of failure, dead letter handling and enterprise scalability features. Then get busy convincing dozens of sysadmins to bust their firewalls open to allow the antiquated piece of crap that is the FTP protocol to get further than your office router.

    Trying to replicate enterprise functionality with naive hacks makes no sense whatsoever. I pity the fool who gets to administer the kludge you leave behind when you switch jobs.

  13. Re:Or ObjectWeb? by eyeball · · Score: 2, Informative

    Joram is beautiful. Unfortunatly it's entirely java based. Sure you can interface to native C applications, but you still end up with a huge runtime, and sometimes you need really lightweight processes.

    --

    _______
    2B1ASK1
  14. Re:And that would be what, exactly? by easter1916 · · Score: 4, Informative

    No, it's akin to JMS (Java Messaging System) or, say, the TIBCO/Rendezvous system used to broadcast trading information to NASDAQ clients.

    Here at my workplace, we use "guaranteed messaging" to integrate disparate systems such as SAP R/3, as iSeries/AS400 running BPCS, a bespoke warehousing system. Messages (i.e., details of a transaction, for example an XML doc. containing details of a sales order) are transmitted between systems to keep them in sync. If the target system is down the messages are queued for delivery in the messaging system itself, and delivered later.

    Not a great explanation, but I hope it helps.

  15. What about XML Blaster? by vegetasaiyajin · · Score: 2, Informative

    XML blaster is an open source message oriented middleware that has bindings for multiple languages (C,C++, Java, PHP, Python, Perl).
    I have never used it, but it's been available since a long time.

    --

    My heart is pure, but make no mistake, it's pure evil
  16. Re:Web services by Anonymous Coward · · Score: 5, Informative

    You are indeed quite funny. However, the total tonnage of posts later in other threads asking about how MQ-Series competes with HTTP, InstantMessanger, J2EE containers has just made it clear to me that Slashdot hasn't been particularly illuminating to nerds - it's spent far to much time on MPAA/RIAA.

    Message-oriented middleware (MOM)is broard term encompasing a messaging system that may be sychronous or asynchronous. MQ-Series runs on over 30 platforms and allows developers to integrate apps on wildly differnet systems. How would you get an app on a Tandam-Hymalaya nonstop machine to talk to an AS400, then pass the results off to Linux box as well as supplying an audit trail to a Z/OS Mainframe?

    Remember that some of these platforms might not even support TCP/IP at your site.

    Hint: Yahoo Instant Messanger will be viewed as a sub-optimal solution.

    AC

    p.s. I was just made redundant at work yesterday. (The company closed - everyone was let go) Time to stop posting and get another job....

  17. Re:And that would be what, exactly? by plierhead · · Score: 2, Informative
    The need for a messaging system is hard to understand if you aren't used to working with/in hideously large, heterogeneous networks and groups of affiliated companies.

    What does it do? Virtually nothing. Just takes a few buytes of data and sends it from here to there. Thats the easy part - the hard part is that it does so with absolutely guaranteed results - if you send it, you know they will get it. Imagine chains of more or less reliable machines, software stacks and networks all linking together sender and receiver, and the horrendous business impact of failure of even a single message, and the non-negotiable need for auditing, and you start to see why there might just be a little tiny bit of complexity in there.

    Some systems throw a few extra dyanmics in on top, such as a publish/subscribe model which takes you beyond just sender and receiver, but the essence of these things is not functionality but utter, total reliability.

    Which seems to me why an open source model is not, in itself, an obvious way to produce such a piece of software. More than anything else - except perhaps database systems - people look to the vendors of these things to guarantee 100% reliability. Such a project, if open source, would require a big name behind it before any corporate would use it - and large corporates by their nature are the normal customers for these things.

    --

    [x] auto-moderate all posts by this user as insightful

  18. See XMLBlaster for message queueing with XML-RPC by jonabbey · · Score: 2, Informative

    It's been out for five years on freshmeat, and supports CORBA, RMI, XML-RPC, nativ socket, or persistent HTTP.

    See the link at http://freshmeat.net/projects/xmlblaster/.

  19. OSMQ by xcjohn · · Score: 2, Informative

    There's been a opensource, cross-platform solution for a number of years (shameless plug), http://www.osmq.org/index.html

    --
    ~~~ They call me Little John, but don't let the name fool you...in real life I'm very big.
  20. Re:Web services by agm · · Score: 2, Informative

    Just last week I developed a SOAP provider and SOAP consumer application in C++ using the gSOAP toolkit. (Check it out on sourceforge). My impression: Absolutely amazing. gSOAP makes SOAP basd applications (whether or not they were initially designed to use SOAP) a breeze to code. Totally flexible, amazingly easy. The applications are boundless.

    (No, I am not affiliated with gSOAP at all, just singing the praises for this amazing (open source) project).

  21. Re:Hooray for captain vagueness! by tweek · · Score: 2, Informative

    In the sense of MQSeries and Rendevous, it's exactly what you describe except with guaranteed delivery. I know they sound a bit useless today but it's like transaction support for network communications among other things.

    Let me give you a PERFECT example of how I've seen MQ Series used.

    DB2 has/had (gone with Stinger, I think) something called userexit. This was a compiled program that was called whenever DB2 was in archival log mode.

    In our case, we use a TSM (Tivoli Storage Manager) userexit. When DB2 is ready to archive a log file, it ships the log to TSM and it's on tape. One company I've heard does MQ Series userexits.

    DB2 userexit's to archive the log and ships it to MQ Series. MQ Series breaks it up into smaller chunks (64k maybe? I can't remember) and sends it to a remote MQ Series server. From that server, the logs are stored locally and backed up or used to roll-forward a read-only copy of database.

    The upside is that this remote MQ server is across the country at another datacenter and you know the log files got there and they got there the way they were when the MQ server got them.

    Check this link. I think it's provided the best simple description of Message Queuing I've seen yet:

    http://www.techworld.com/applications/features/i nd ex.cfm?FeatureID=731

    --
    "Fighting the underpants gnomes since 1998!" "Bruce Schneier knows the state of schroedinger's cat"