Archive for the ‘announcements’ Category

New Book – Understanding Message Brokers

If this blog has been unusually quiet over the last few months, it is with good reason – I wrote another book! Understanding Message Brokers has just been released for FREE download by O’Reilly. It is a 70 page concentrated brain dump of how to reason about messaging, based on a presentation I gave at a number of conferences around Europe last year – The Myth of The Magical Messaging Fabric.


The book is in O’Reilly’s report format, and takes about a weekend to read through – perfect for the busy developer, architect, or CTO.

It takes you through two different messaging products – ActiveMQ and Kafka – to not just explain how these technologies work, but also to give you a sense of the decisions their authors made and the constraints that they were working with. The idea is that not only will you walk away with a better understanding of these products, but you will know what to look at the next time you approach any messaging technology. As a bonus, I included a chapter about some of the key patterns used to build reliable messaging applications, because it’s not just a case of having great tools – you have to know how to use them.

The book will also be available in paper form at O’Reilly conferences.



Born early morning on Monday the 21st of November. Mum and baby doing very well. The girls are massively excited to have a little brother!


Born early morning on Monday the 17th of March. Mum and baby are back home and doing well. Older sister very excited! Daddy very excited to see some sort of balance restored to the household :)


Born Wednesday the 8th of March. Mum and baby are back home and doing well.

Bootstrap Projects for Getting Started with ServiceMix 4

Over the Christmas break I cleaned up and published a set of Maven projects for getting started with ServiceMix 4.4.1+ into GitHub. I found myself reusing the same code for a number of activities, and figured it may be of broader use to others. You can find it under FuseByExample/smx-bootstraps.

smx-bootstraps contains within it a set of OSGI Blueprints (DI, based on the ideas behind Spring) bundles that exercise some of the core things that you will want to do with ServiceMix:

  • defining services in bundles that can be reused in other bundles
  • use Camel for writing integration code
  • use ActiveMQ for sending persistent messages between bundles, regardless of whether they are in the same container or in others
  • request-response over messaging
  • Update 20/02/2012: RESTful web services!!!
  • externalising your environment configuration
  • group bundles into features

The README document at the project root explains how to get started with ServiceMix, deploy bundles, change code and play with config.

Why would you want to use them?

ServiceMix went through a massive generational change between versions 3.X and 4.X, moving from JBI to an OSGi based model. While development work on it is proceeding at a huge rate, the documentation hasn’t kept up – although it is being brought up to date in the background. smx-bootstraps contains small artifacts that are hopefully easy to understand and play with, along with instructions on how to use them in the container.

The project may also be use of use as a starting starting point to further development. A fairly clean project layout exists that you can use as a reference point, which acts as a supplement to the Maven archetypes that are publicly available, such as:

  • org.apache.camel.archetypes:camel-archetype-blueprint for generating Blueprint bundles to run Camel routes; similar to smx-pinger and smx-ponger bundles in smx-bootstraps
  • org.apache.karaf.archetypes:karaf-blueprint-archetype for generating simple Blueprint bundles; such as the smx-ponger-service bundle

I have found these bundles to be a really handy way of exercising ServiceMix features, and working with various configurations. Not having to code up something new each time is a huge time saver. Hopefully you should find this as well.

I expect to expand this little project as time goes on and I find myself recreating other use cases, such as exposing web services – next on my “todo list”. Please drop me a line at “jakub dot korab at gmail” if you find this useful or have any ideas that would fit in well. Of course being GitHub, feel free to fork it or contribute back changes.