InfoQ

News

OpenCredo Announces AMQP Support for Spring Integration

Posted by Josh Long on Mar 05, 2010

Community
Java
Topics
Messaging
Tags
Erlang ,
Spring Integration ,
RabbitMQ ,
Spring ,
Enterprisey

OpenCredo - a consultancy helmed by - among others - Jonas Partner and Russ Miles - has recently announced an open source adapter to let Spring Integration applications work with AMQP endpoints.

The Advanced Message Queuing Protocol (AMQP) is a platform neutral specification that describes messaging middleware to clients. It doesn't prescribe an API so much as a wire-level format. Think of it as a protocol specifically geared to asynchronous messaging. Any client can implement it, including JMS APIs.

RabbitMQ is a message-oriented middleware (MOM) product developed using Erlang, and can therefore take advantage of that language's excellent threading and multicore capabilities, able to seamlessly switch concurrent code in a single VM to a distributed application across multiple physical nodes. RabbitMQ does not offer a JMS client, however, but it does offer a AMQP client. RabbitMQ is not the only middleware whose designers chose Erlang when scale mattered: ejbabberd (an XMPP instant messaging server), CouchDB (a document database), and Amazon's SimpleDB (a distributed database) are all based on Erlang.

So: while JMS is a very prevalent, standard mechanism to connect Java clients to messaging middleware, it's not the only game in town. AMQP can bring sophisticated messaging solutions to Java users, too. OpenCredo's announcement - an integration of AMQP with the Spring Integration framework - represents a practical demonstration of how to bring AMQP-based messaging systems to the enterprise through the Spring framework.

Spring Integration is a framework that sits on top of the Spring framework enables messaging oriented solutions, very much like an ESB. Spring Integration provides adapters that let your code react to events in many external systems in much the same way as you might if you were writing a Java EE Message Driven Bean in EJB or Message Driven POJO in Spring. The goal of the OpenCredo framework is to provide a consistent usage idiom of the various native Java AMQP clients and hook them into the Spring Integration bus. At the moment, this support wraps the RabbitMQ AMQP java client and decouples your logic from any awareness of the messaging system by using Spring Integration to provide a layer of indirection. Importantly, AMQP is an open, on-the-wire protocol; so one client should work with many vendors, where a JMS client is coupled with the JMS server and version.

OpenCredo worked with the RabbitMQ CEO Alexis Richardson and the RabbitMQ team to make this release, and plan on upgrading it. On the to-do list is support for a event-driven (as opposed to a poller-driven) client, and declarative Spring transaction management for the client. OpenCredo recently announced support for using Esper - a Complex Event Processing (CEP) solution - in conjunction with Spring Integration. Esper support provides a powerful one-two punch, enabling messaging and monitoring from a simple, POJO-centric Spring Integration standpoint.

  • This article is part of a featured topic series on Erlang
Performance by C Curl Posted Mar 6, 2010 12:23 AM
Transaction Support by Matt Giacomini Posted Mar 8, 2010 12:37 PM
Very Interesting.... by John O'Hara Posted Mar 9, 2010 7:02 PM
  1. Back to top

    Performance

    Mar 6, 2010 12:23 AM by C Curl

    Has anyone done any comparative benchmarks of different AMQP implementations?

    For example, how does Apache Qpid compare to RabbitMQ in terms of performance (throughput, concurrency, scalability, latency, etc)? I know JP Morgan did some benchmarking of different implementations a while back, and the results were rather interesting.

  2. Back to top

    Transaction Support

    Mar 8, 2010 12:37 PM by Matt Giacomini

    ?

  3. Back to top

    Very Interesting....

    Mar 9, 2010 7:02 PM by John O'Hara

    AMQP defines more semantics than the JMS API for it can expose, so down the road there are a lot of opportunities to do cool things in this integration.

    Congratulations on your work, and having the vision to go straight from Spring to AMQP.

    Are you hooked up with any folk from the AMQP Working Group?

Educational Content

The Power of Visibility: Driving a Lean-Agile Transition

Kelley Horton discusses the reasons why her organization transitioned to Lean-Agile, the approach used and the visual tools helping them minimize WIP, concluding that visibility leads to success.

Panel: Modular Java

Alex Blewitt, Kevin Seal and Alex Buckley answer Java modularity-related questions: when is modularity needed, how to address it, and what are the improvements in OSGi-based development.

Whither the Smartphone? Future Directions in Smartphones and Mobile Development

Adam Blum discusses the current trends in mobile development and smartphones, trying to predict what will happen in this area over the next 5 years so a developer would know what to expect.

Cogs in the Machine: Testing Code Embedded in an Impenetrable Framework

Roy Osherove discusses the difficulties met when trying to test code embedded in a framework (cog), presenting several solutions to create unit tests for cogs, using Silverlight code as example.

Confessions of A New Agile Developer

This short article is a first-person case history of someone taking up Agility for the first time. It covers the problems and reactions that are common to most teams and most developers.

Scott Chacon on Git and GitHub

Scott Chacon talks about the technologies that power GitHub (Erlang, Redis,...), and the benefits of Git as a version control and as a storage system. Also: ShowOff, a JS-based presentation tool.

Reformulating the Product Delivery Process

Israel Gat, Erik Huddleston and Stephen Chin present how Inovis realized a higher product throughput by using three unconventional Kanban practices and a Lean Release Management tool called APROPOS.

Enterprise Mashups: Why Do I Care?

Ross Mason discusses how to use enterprise mashups by applying a number of patterns, such as FeedFactory, Super Search, and Pipeline, in order to find new ways to benefit from existing enterprise data