osunderdog has asked for the wisdom of the Perl Monks concerning the following question:

As my sig indicates, I'm going to be out on my own shortly. One piece of infrastructure that I will miss dearly at my current company is an enterprise wide messaging queueing system.

For example: App A sends a message to App B. App B picks up the message and processes it.

From my reading lately, C# has MSMQ and Java as JMS. What's the equivalent technology for Perl? I haven't ever looked for it because I've always had a solution provided by my current employer...

Also, FWIW. The book Enterprise Integration Patterns by Gregor Hohpe & Bobby Woolfe. Is a very good book on this topic.

Wow! I wish this book existed 5-10 years ago. Anyway, any suggestions on direction would be much appreciated!

Soon to be unemployed!

Replies are listed 'Best First'.
Re: Perl Friendly Message Queueing Tools
by gellyfish (Monsignor) on May 03, 2005 at 16:03 UTC

    I'm with you on the book :-) As for the Messaging Middleware you might want to look at Goldwater or D-Bus both of which are open source and both of which have Perl bindings.

    /J\

      Ah, I just realized that there is an article on D-Bus in the February 2005 issue of Linux Journal. Thank you for jogging my memory!

      Thought I was under the impression that it was more for lower level communication. I'll re-read that article.

      Soon to be unemployed!

        Just to follow up on D-Bus, I re-read the LJ article and the tutorial on their web page.

        From the documentation of D-bus, I do not think it is applicable as an "enterprise wide messaging queueing system" (EWMQS). It is only intended to handle communication between applications on the same machine, not between two machines. Here is a quote from the D-Bus Uses section of their tutorial.

        • Communication between desktop applications in the same desktop session; to allow integration of the desktop session as a whole, and address issues of process lifecycle (when do desktop components start and stop running).

        • Communication between the desktop session and the operating system, where the operating system would typically include the kernel and any system daemons or processes.

        Soon to be unemployed!

Re: Perl Friendly Message Queueing Tools
by mpeters (Chaplain) on May 03, 2005 at 16:51 UTC

      Spread looks very promising! It built pretty quick, and it came bundled with a perl package:

      use Spread qw(:SP :MESS :ERROR);

      Worked right out of the box. I think I'll run with this one for a bit. Thanks for the pointer!

      Soon to be unemployed!

Re: Perl Friendly Message Queueing Tools
by inman (Curate) on May 03, 2005 at 16:11 UTC
Re: Perl Friendly Message Queueing Tools
by jfroebe (Parson) on May 03, 2005 at 16:03 UTC

    Perl works with either messenging system as well as Tibco and others. Perl itself doesn't have a messenging system to speak of. Also note, that C# can interface with JMS and the others.

    Jason L. Froebe

    Team Sybase member

    No one has seen what you have seen, and until that happens, we're all going to think that you're nuts. - Jack O'Neil, Stargate SG-1

Re: Perl Friendly Message Queueing Tools
by dynamo (Chaplain) on May 03, 2005 at 20:46 UTC
    For an excellent replacement to an enterprise-wide messaging system, check out Jabber. There are LOTS of Jabber-based perl modules, there's an O'Reilly book ('Programming Jabber') with a lot of perl in it, and in general is a well thought out solution to the problem of interapplication communication.

    Also I recommend serializing objects where appropriate using YAML.

    Both YAML and Jabber have very good support for interfacing to other languages on the other end of the messaging pipe.

Re: Perl Friendly Message Queueing Tools
by b10m (Vicar) on May 03, 2005 at 17:57 UTC
    Soon to be unemployed!

    Maybe you should contact hacker for it looks like he needs someone ;)

    --
    b10m

    All code is usually tested, but rarely trusted.
Re: Perl Friendly Message Queueing Tools
by gri6507 (Deacon) on May 03, 2005 at 16:43 UTC
    What kind of messages are exchanged between the apps? Could simple socket communication work?

      Well, I'm looking for an "enterprise wide messaging queueing system" (EWMQS). The emphasis here is a system that provides a quick, clean api for transmitting information from one app and receiving it in another app. Granted you can do this with TCP/IP. It'll work for the first few apps, however it starts to break down when you scale up to n applications intercommunicating.

      One of the first things that an EWMQS does is hide the details of platform specific byte level issues (big/little endian, 32/64 bit integer representation, etc).

      Another issue is connection oriented vs channel oriented. TCP/IP is connection oriented. It requires both ends to be alive before communication can occur. The EWMQS solutions I mentioned above (JMS & MSMQ) allow you to establish a channel that receives messages independent of the application that will actually receive an process those messages. This gives a level of insulation between the sender and the receiver that can't happen with raw TCP/IP. OTOH it does eliminate the possibility for realtime communication

      Perhaps more of an answer than you were looking for? Well, I anticipated this question and had prepared an explanation if the question was asked. ;)

      Soon to be unemployed!

Re: Perl Friendly Message Queueing Tools
by mattr (Curate) on May 04, 2005 at 17:04 UTC
    Interesting, I've been designing something that was going use xml-rpc but will look at jabber again. I need to build light, cross-platform perl-based servers for messaging between machines.

    It is a little tangential but I'd like to mention there is also Ivy which is an interesting-looking, simple LGPL "software bus". Has anybody used it? I came across it a couple years ago through the Digistrips and Zinc sites (using perl to make prototype for air traffic control system in France).