Some technical authors have a very formal, dry style when presenting useful information, whereas some become too friendly, informal and get lost in jokes and jargon, forgetting that the main purpose is to convey concepts and techniques as clearly as possible. This book is important and valuable because it combines a friendly, informal style with a mentality that always keeps presenting information clearly as the main objective.
One of the nice things about the book is that it does not assume the reader to know anything about messaging technologies, enterprise service buses and other concepts. It starts with a short history of messaging middleware, presents ‘why’s as well as ‘how’s and then describes how RabbitMQ came to be. Giving the reader a well-founded context is important for future explanations and discussions, not only particularly for RabbitMQ but for messaging challenges in general.
Another nice aspect of the book is that it strikes a very nice balance between explaining fundamental concepts and keeping a very hands-on attitude by providing the reader with complete code examples that make use of those concepts. They also do not forget to give just enough Erlang background to help those struggling with some aspects of RabbitMQ.
If the book only gave information about the fundamentals of RabbitMQ, it would still provide enough value, but it goes beyond that by discussing different architectures for different type of applications and messaging needs (and giving complete code examples for them), showing how to build a simple load balancing system using HAProxy and RabbitMQ in the cloud, and and if that was not enough, the authors also show how to build a simple but truly geographically distributed messaging architecture with failover capabilities.
Achieving all of these in about 300 pages is no easy task and I can easily recommend this book to any software architect, developer, or DevOps person who deal with messaging systems or want to explore how some common software and architectural challenges can be overcome with decoupling software components and letting a messaging broker such as RabbitMQ do the heavy lifting of carrying and routing messages throughout the system.