, , ,

A review of “RabbitMQ Cookbook”

Authors: Sigismondo Boschi & Gabriele Santomaggio – Packt Publishing

RabbitMQ Cookbook

Programming Cookbooks are where one expects to find programming gems and when a thorny problem presents a cookbook provides an ideal reference source. Thankfully for us this book does not fail to deliver. Of its 260+ pages, it packs nearly 60 pages with common problems and viable solutions. The book goes beyond being just a Problem-Solution “Cookbook”.

In addition to the problem-solution chapters and following a common trend with RabbitMQ publications, the Authors have packed in additional chapters dedicated to RabbitMQ High Availability (HA), Clustering, Administration, Management, Configuration, Monitoring and Performance enhancements. All addressed in sufficient detail to be a reference source when (urgently) needed. For each solution there is a clear theory of operation (referred to as “How it works”) to clearly explain the presented solution to common RabbitMQ programming problems.

The Clustering and HA chapters (Chapters 6 and 7) try to cover step by step ways to implement the technology but some assumptions are made by the authors on the reader knowledge and skills in cluster technologies and system administration. From experience, most software developers are not administrators and most administrators are not software developers so the book is trying to cover both bases despite stating the book is aimed at developers. A better strategy would be to identify a cluster platform and concentrate on the coding issues for it, leaving the construction and administration to System Engineers?

Support for different Operating Systems is covered, with Linux (being the primary flavour) and Microsoft Windows specific details covered where needed, especially in regard to Administration topics.

The coding style used in this book is predominately Java and the authors often reference related Java technologies, personally I don’t use Java in a commercial environment so the use of technologies the reader is not going to be familiar with might put people off. Despite PHP’s wide influence in the web server world there is literally no mention of it in the book even though there are fully supported ports of the AMQP library to the PHP eco-system. The .NET client library is a supported implementation yet there are a few examples in C# in the text, so a programmer, skilled only in Microsoft Windows C# may not be skilled enough to translate between Java and C#. I prefer to code in C++ (even going to the extent of writting wrappers around “C” code) but there is no sample “C” code even though rabbitmq-c client library is fully supported and well documented, I can understand there being no C++ examples as there are numerous libraries but no definitive standard C++ library, despite these short comings the language examples are clear and easy to extrapolate to any Object Oriented language if you are a seasoned programmer, so this does not provide a major problem. There is even some Python examples for the die hard RabbitMQ administrator.

What impressed me with this book is the additional coverage of topics such as utilization of Amazon Web Services (AWS) to create scalable clusters that can adapt to load, integrating with MQTT for talking to mobile devices and coverage on interchanging data with other AMQP compatible systems such as QPID and CloudAMQP. There are chapters dedicated to each major topic and while the text descriptions of the different technologies is sufficient, there is minimal coding examples, but enough to point you in the right direction to explore further.

When all else fails in your RabbitMQ application there is a chapter dedicated to errors and debugging, with useful examples showing how to network sniff interactions between RabbitMQ client and server.

In summary, like many RabbitMQ books, this one will be resident on your desk more than the bookshelf, often being referenced for ideas and solutions as a good cookbook should.

Sid Young
January 2014