PacktLib: RabbitMQ Cookbook

RabbitMQ Cookbook


About the Authors

About the Reviewers


Working with AMQP


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

Going beyond the AMQP Standard


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

Managing RabbitMQ


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

Mixing Different Technologies


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

Using RabbitMQ in Web Applications


Developing web monitoring applications with Spring

Developing asynchronous web searches with Spring

Developing web monitoring applications with STOMP

Developing Scalable Applications


Creating a localhost cluster

Creating a simple cluster

Adding a RabbitMQ cluster automatically

Introducing a load balancer to consumers

Creating clients of the cluster

Developing High-availability Applications


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

Performance Tuning for RabbitMQ


Multithreading and queues

System tuning

Improving bandwidth

Using different distribution tools

Extending RabbitMQ Functionality


Enabling and configuring the STOMP plugin

Managing a RabbitMQ cluster

Monitoring Shovel status

Developing new plugins – attaching to a relational database with ODBC

RabbitMQ on AWS


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

AMQP and Cloud Computing – RabbitMQ on PaaS


RabbitMQ on CloudAMQP

First application on Cloud Foundry

Using RabbitMQ on Cloud Foundry

Managing RabbitMQ Error Conditions


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