« Micro-orchestration: using the Celtix Router as an application container | Main | Design for Success: Best Practices for WSDL Versioning »

QCon London, Celtix Enterprise and AMQP

I got to go to QCon in London this year, and decided to put together something challenging for my presentation. I'd been playing with Unified Business Language (UBL 2.0), and posed the question: how easy would it be to build a Celtix Enterpise server that can accept a UBL invoice in a variety of formats (XML, SOAP, JSON) over a number of transports (AMQP, JMS and HTTP)?

Finding the answer turned out to be a lot of fun: Using Eclipse, WTP and Celtix Enterprise I quickly got a WSDL contract together for the service, along with bindings for XML and SOAP payloads. After that, implementation was straightforward JAX-WS - all the details are provided in my slideware, which I'm attaching to this blog. Using JSON was a little tricky, but thanks to some help from Dan Diephouse (Thanks Dan!) I used the Jettison STAX implementation with an XML binding to produce both Badgerfish and mapped JSON. It's a pragmatic approach, but I'd prefer it if there was a bona-fide JSON binding for WSDL that handles these detail, taking JSON support out of the code and into the contract. Maybe that's something we should get into the Apache CXF roadmap?

While it's always great to put a lovely demo together and have it work on the day, its doubly rewarding to see how relevant this stuff is: AMQP is a hot topic right now and the ability to simply configure AMQP in to a pure-Java JAX-WS client or service is really nice. Also, as Sailesh Panchal of Travelex was keen to point out in his presentation, the ability to support XML and SOAP payloads over multiple transports is hugely important in terms of producing really reusable services, supporting both REST and SOA architectures.

Next up? I'd like to push my demo a little further to get some performance stats over different payload and protocol combinations: I've heard talk that JSON parsing can be up to 100x faster than XML parsing: let's see if that really holds true. Also, I'm keen to test the fundamental premise of AMQP: on-the-wire interoperability between different messaging middlewares. Right now my client, service and broker are all Apache QPID, the AMQP implementation that comes bundled in Celtix enterprise. I'd like to see what happens if when I swap the qpid broker with open-amqp or RabbitMQ... watch this space for more...

Download Ade's slideset

TrackBack

TrackBack URL for this entry:
http://blogs.iona.com/cgi-bin/mt/mt-tb.cgi/473

Comments (2)

Thanks for blogging about QCon! I just wanted to let you know that we quoted and linked from this entry on the over all QCon 2007 blogger's key takeaway points and lessons learned article: http://www.infoq.com/articles/qcon-2007-bloggers-summary

Feel free to link to it and of course blogging about this articles existence would help even more people learn from your and other bloggers takeaways.

Thanks again!

Diana
InfoQ/QCon

Chandrashekhar:

Nice set of slides. Would it be possible to share the demo artifacts, so that i can try it out.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on March 20, 2007 9:35 PM.

The previous post in this blog was Micro-orchestration: using the Celtix Router as an application container.

The next post in this blog is Design for Success: Best Practices for WSDL Versioning.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31