RabbitMQ Cookbook

Knowing a reliable enterprise messaging system based on the AMQP standard can be an essential for today’s software developers. This cookbook helps you learn all the basics of RabbitMQ through recipes, code, and real-life examples.

RabbitMQ Cookbook

Cookbook
Sigismondo Boschi, Gabriele Santomaggio

Knowing a reliable enterprise messaging system based on the AMQP standard can be an essential for today’s software developers. This cookbook helps you learn all the basics of RabbitMQ through recipes, code, and real-life examples.
$10.00
$44.99
RRP $26.99
RRP $44.99
eBook
Print + eBook
$12.99 p/month

Get Access

Get Unlimited Access to every Packt eBook and Video course

Enjoy full and instant access to over 3000 books and videos – you’ll find everything you need to stay ahead of the curve and make sure you can always get the job done.

+ Collection
Free Sample

Book Details

ISBN 139781849516501
Paperback288 pages

About This Book

  • Create scalable distributed applications with RabbitMQ
  • Exploit RabbitMQ on both Web and mobile platforms
  • Deploy message services on cloud computing platforms
  • Full of screenshots and descriptions with clear, step-by-step instructions and practical examples

Who This Book Is For

If you are a software developer who wants to develop distributed applications based on messaging, then this book is for you. It’s assumed that you have some experience with multithreading applications and distributed applications. You are also expected to know the basic concepts of Web and cloud applications in order to follow the recipes effectively.

Table of Contents

Chapter 1: Working with AMQP
Introduction
Connecting to the broker
Producing messages
Consuming messages
Using body serialization with JSON
Using RPC with messaging
Broadcasting messages
Working with message routing using direct exchanges
Working with message routing using topic exchanges
Guaranteeing message processing
Distributing messages to many consumers
Using message properties
Messaging with transactions
Handling unroutable messages
Chapter 2: Going beyond the AMQP Standard
Introduction
How to let messages expire
How to let messages expire on specific queues
How to let queues expire
Managing rejected or expired messages
Understanding the alternate exchange extension
Understanding the validated user-ID extension
Notifying the consumers of queue failures
Understanding the exchange-to-exchange extension
Embedding message destinations within messages
Chapter 3: Managing RabbitMQ
Introduction
Using vhosts
Configuring users
Using SSL
Implementing client-side certificates
Managing RabbitMQ from a browser
Configuring RabbitMQ parameters
Developing Python applications to monitor RabbitMQ
Developing your own web applications to monitor RabbitMQ
Chapter 4: Mixing Different Technologies
Introduction
Using a .NET client
Binding an app from iPhone to RabbitMQ via MQTT
Using messaging to update Google Maps on Android
Publishing messages from Android in the background
Exchanging RabbitMQ messages with Qpid
Exchanging RabbitMQ messages with Mosquitto
Binding a WCF application with .Net clients
Chapter 5: Using RabbitMQ in Web Applications
Introduction
Developing web monitoring applications with Spring
Developing asynchronous web searches with Spring
Developing web monitoring applications with STOMP
Chapter 6: Developing Scalable Applications
Introduction
Creating a localhost cluster
Creating a simple cluster
Adding a RabbitMQ cluster automatically
Introducing a load balancer to consumers
Creating clients of the cluster
Chapter 7: Developing High-availability Applications
Introduction
Mirroring queues
Synchronizing queues
Optimizing mirror policies
Distributing messages between a couple of brokers
Creating a geographical cluster replication
Filtering and forwarding messages
Combining high-availability technologies together
Client high availability
Chapter 8: Performance Tuning for RabbitMQ
Introduction
Multithreading and queues
System tuning
Improving bandwidth
Using different distribution tools
Chapter 9: Extending RabbitMQ Functionality
Introduction
Enabling and configuring the STOMP plugin
Managing a RabbitMQ cluster
Monitoring Shovel status
Developing new plugins – attaching to a relational database with ODBC
Chapter 10: RabbitMQ on AWS
Introduction
Using RabbitMQ EC2 instances
Creating a master image
Creating a cluster with two EC2 instances
Using AWS Load Balancing in front of a RabbitMQ cluster
Configuring EC2 dynamic bind
Dealing with load spikes and resource optimization in the cloud
Chapter 11: AMQP and Cloud Computing – RabbitMQ on PaaS
Introduction
RabbitMQ on CloudAMQP
First application on Cloud Foundry
Using RabbitMQ on Cloud Foundry
Chapter 12: Managing RabbitMQ Error Conditions
Introduction
Monitoring RabbitMQ's behavior
Using RabbitMQ to troubleshoot itself
Tracing RabbitMQ's ongoing activity
Debugging RabbitMQ's messages
What to do when RabbitMQ fails to restart
Debugging using Wireshark

What You Will Learn

  • Produce and consume AQMP messages using the fire-and-forget messaging model
  • Optimize messaging applications using RabbitMQ extensions
  • Learn how to configure RabbitMQ parameters, enable RabbitMQ plugins, and monitor RabbitMQ activities
  • Integrate with other protocols such as MQTT, STOMP, and JSON
  • Develop Web applications with RabbitMQ as a service bus
  • Create a scalable and robust application using RabbitMQ clustering
  • Create a highly available RabbitMQ cluster using RabbitMQ HA policies
  • Create a geographic RabbitMQ cluster using the federation and shovel plugins
  • Create and auto-scale a RabbitMQ cluster on Amazon Web Services
  • Deploy and use RabbitMQ on Cloud-Foundry
  • Create custom RabbitMQ plugins in Erlang

In Detail

RabbitMQ is an open source message broker software (sometimes called message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP). The RabbitMQ server is written in the Erlang programming language and is built on the Open Telecom Platform framework for clustering and failover. Messaging enables software applications to connect and scale. Applications can connect to each other as components of a larger application or to user devices and data.

RabbitMQ Cookbook touches on all the aspects of RabbitMQ messaging. You will learn how to use this enabling technology for the solution of highly scalable problems dictated by the dynamic requirements of Web and mobile architectures, based for example on cloud computing platforms. This is a practical guide with several examples that will help you to understand the usefulness and the power of RabbitMQ.

This book helps you learn the basic functionalities of RabbitMQ with simple examples which describe the use of RabbitMQ client APIs and how a RabbitMQ server works. You will find examples of RabbitMQ deployed in real-life use-cases, where its functionalities will be exploited combined with other technologies. This book helps you understand the advanced features of RabbitMQ that are useful for even the most demanding programmer. Over the course of the book, you will learn about the usage of basic AMQP functionalities and use RabbitMQ to let decoupled applications exchange messages as per enterprise integration applications. The same building blocks are used to implement the architecture of highly scalable applications like today's social networks, and they are presented in the book with some examples. You will also learn how to extend RabbitMQ functionalities by implementing Erlang plugins.

This book combines information with detailed examples coupled with screenshots and diagrams to help you create a messaging application with ease.

Authors

Table of Contents

Chapter 1: Working with AMQP
Introduction
Connecting to the broker
Producing messages
Consuming messages
Using body serialization with JSON
Using RPC with messaging
Broadcasting messages
Working with message routing using direct exchanges
Working with message routing using topic exchanges
Guaranteeing message processing
Distributing messages to many consumers
Using message properties
Messaging with transactions
Handling unroutable messages
Chapter 2: Going beyond the AMQP Standard
Introduction
How to let messages expire
How to let messages expire on specific queues
How to let queues expire
Managing rejected or expired messages
Understanding the alternate exchange extension
Understanding the validated user-ID extension
Notifying the consumers of queue failures
Understanding the exchange-to-exchange extension
Embedding message destinations within messages
Chapter 3: Managing RabbitMQ
Introduction
Using vhosts
Configuring users
Using SSL
Implementing client-side certificates
Managing RabbitMQ from a browser
Configuring RabbitMQ parameters
Developing Python applications to monitor RabbitMQ
Developing your own web applications to monitor RabbitMQ
Chapter 4: Mixing Different Technologies
Introduction
Using a .NET client
Binding an app from iPhone to RabbitMQ via MQTT
Using messaging to update Google Maps on Android
Publishing messages from Android in the background
Exchanging RabbitMQ messages with Qpid
Exchanging RabbitMQ messages with Mosquitto
Binding a WCF application with .Net clients
Chapter 5: Using RabbitMQ in Web Applications
Introduction
Developing web monitoring applications with Spring
Developing asynchronous web searches with Spring
Developing web monitoring applications with STOMP
Chapter 6: Developing Scalable Applications
Introduction
Creating a localhost cluster
Creating a simple cluster
Adding a RabbitMQ cluster automatically
Introducing a load balancer to consumers
Creating clients of the cluster
Chapter 7: Developing High-availability Applications
Introduction
Mirroring queues
Synchronizing queues
Optimizing mirror policies
Distributing messages between a couple of brokers
Creating a geographical cluster replication
Filtering and forwarding messages
Combining high-availability technologies together
Client high availability
Chapter 8: Performance Tuning for RabbitMQ
Introduction
Multithreading and queues
System tuning
Improving bandwidth
Using different distribution tools
Chapter 9: Extending RabbitMQ Functionality
Introduction
Enabling and configuring the STOMP plugin
Managing a RabbitMQ cluster
Monitoring Shovel status
Developing new plugins – attaching to a relational database with ODBC
Chapter 10: RabbitMQ on AWS
Introduction
Using RabbitMQ EC2 instances
Creating a master image
Creating a cluster with two EC2 instances
Using AWS Load Balancing in front of a RabbitMQ cluster
Configuring EC2 dynamic bind
Dealing with load spikes and resource optimization in the cloud
Chapter 11: AMQP and Cloud Computing – RabbitMQ on PaaS
Introduction
RabbitMQ on CloudAMQP
First application on Cloud Foundry
Using RabbitMQ on Cloud Foundry
Chapter 12: Managing RabbitMQ Error Conditions
Introduction
Monitoring RabbitMQ's behavior
Using RabbitMQ to troubleshoot itself
Tracing RabbitMQ's ongoing activity
Debugging RabbitMQ's messages
What to do when RabbitMQ fails to restart
Debugging using Wireshark

Book Details

ISBN 139781849516501
Paperback288 pages
Read More