Book Image

Mastering RabbitMQ

By : Yusuf Aytas, Emrah Ayanoglu, Dotan Nahum
Book Image

Mastering RabbitMQ

By: Yusuf Aytas, Emrah Ayanoglu, Dotan Nahum

Overview of this book

RabbitMQ is one of the most powerful Open Source message broker software, which is widely used in tech companies such as Mozilla, VMware, Google, AT&T, and so on. RabbitMQ gives you lots of fantastic and easy-to-manage functionalities to control and manage the messaging facility with lots of community support. As scalability is one of our major modern problems, messaging with RabbitMQ is the main part of the solution to this problem This book explains and demonstrates the RabbitMQ server in a detailed way. It provides you with lots of real-world examples and advanced solutions to tackle the scalability issues. You’ll begin your journey with the installation and configuration of the RabbitMQ server, while also being given specific details pertaining to the subject. Next, you’ll study the major problems that our server faces, including scalability and high availability, and try to get the solutions for both of these issues by using the RabbitMQ mechanisms. Following on from this, you’ll get to design and develop your own plugins using the Erlang language and RabbitMQ’s internal API. This knowledge will help you to start with the management and monitoring of the messages, tools, and applications. You’ll also gain an understanding of the security and integrity of the messaging facilities that RabbitMQ provides. In the last few chapters, you will build and keep track of your clients (senders and receivers) using Java, Python, and C#.
Table of Contents (18 chapters)
Mastering RabbitMQ
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Index

Using Bunny


Let's continue by building a sanity-level consumer and producer just to test things out.

Bunny producer

We will first have a taste of what a log aggregator producer looks like:

require "bunny"

conn = Bunny.new
conn.start

channel = conn.create_channel
queue = channel.queue("clicks")

channel.default_exchange.publish('{ "message":"hello" }', :routing_key => queue.name)
puts "* sent!"

conn.close

We start inquiring about Bunny so that we have access to the Bunny API. We then initialize a Bunny instance, start a connection for the purpose of getting a reach at an AMQP channel, and then through the channel, we declare a queue and get access to an exchange.

We use the default exchange for simplicity, which was accessed through the channel we just got. We publish through a routing key that incidentally (or not) has the same name as the queue in order to autoroute the message to that queue.

We send a message that looks like JSON, but this is just a hint at what's about to come; for all...