SlideShare a Scribd company logo
Scaling application
with RabbitMQ
Scaling application with RabbitMQ
Nahidul Kibria
Co-Leader, OWASP Bangladesh,
Principal Software Engineer,
Orbitax Bangladesh Ltd.
@nahidupa
What is RabbitMQ?
We See Code
Clustering and High Availability
Docker+RabbitMQ
I will stop on some checkpoint and take question.
Birds eye view.
Checkpoint sign
Demo sign
What is RabbitMQ ?
http://goo.gl/gEDUUo
Polyglot
Java and JVM
Ruby
Python
.NET
PHP
Perl
C / C++
Node.js
Go
•Erlang
•Haskell
•Provisioning (Chef, Puppet, etc)
and Operations
•Mobile
•Database Integration
•Web Messaging
•CLI
•3rd party
plugins
•Ocaml
•Common Lisp
•COBOL
Scaling
Scaling UP vs S c a leO UT
Why do we need messaging?
We are about to get a new project give me a prototype
will be simple
Product owner
come…Notify friends
We need to post in
twitter
First delivery
It take too much
bandwidth…lablabla..
I actually need that yesterday
We are going to third-
party integration
PHP
Python
Java
UX guys, Customer
feedback
we don’t want to wait
We need to build instagram!
Poor you (:
You play boss killer some time and get back to work
All of this the simple solution is
messaging
Simple message queue
Who are using RabbitMQ?
It is used in the Ocean Observatories Initiative—an
architecture that collects 8 terabytes of data per day.
Who are using RabbitMQ?
Instagram
Indeed.com
Telefonica
Mercado Libre
NHS
Mozilla
Install RabbitMQ
Install in *nix/debian
Scaling application with RabbitMQ
After Install
Install Management portal for
RabbitMQ
Demo time
Scaling application with RabbitMQ
Scaling application with RabbitMQ
Hello word
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
string message = "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish("", "hello", null, body);
Console.WriteLine(" [x] Sent {0}", message);
}
}
Queue Declare
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer);
Console.WriteLine(" [*] Waiting for messages." +
"To exit press CTRL+C");
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
}
}
}
Exchange
Scaling application with RabbitMQ
Scaling application with RabbitMQ
Scaling application with RabbitMQ
Scaling application with RabbitMQ
Coding
Work Queues
Exchanges
Routing
Direct exchange
Multiple bindings
Log
Topic exchange
Remote procedure call
(RPC)
easynetq
https://www.rabbitmq.com/devtools.html
Scaling application with RabbitMQ
Easynetq save your time
//many simplification
var bus = RabbitHutch.CreateBus("host=ubuntu:5672,ubuntu:5673");
//also give freedom
var advancedBus = RabbitHutch.CreateBus("host=localhost").Advanced
RabbitMQ Features
RabbitMQ Features
Large Message
Messaging in general should be small
AMPQ support very large messages
RabbitMQ you can use large messages but you need to be careful
MSMQ-Message Queuing is limited
in the size of documents that can
be processed. The maximum size
document that Message Queuing
supports is 4 MB if the document
is in ASCII. The message queue
can handle a maximum of 2 MB if
the document is in Unicode.
Buffered and chunked
http://goo.gl/SgnBYf
Virtual Hosts
Error Handling
//no retry
var ea = (BasicDeliverEventArgs) consumer.Queue.Dequeue();
channel.BasicReject(ea.DeliveryTag,false);
//retry
var ea = (BasicDeliverEventArgs) consumer.Queue.Dequeue();
channel.BasicReject(ea.DeliveryTag,true);
We cannot retry forever!
channel.BasicAck(ea.DeliveryTag,false);
ea.BasicProperties.Headers.Add("RetryHeader",1);
channel.BasicNack(ea.DeliveryTag, false,true);
Dead letter queue
feelsleepy
Clustering and High Availability
Demo Environment
Sync Erlang cookie
10.10.52.130 debian
If erlang version mismatch
Join cluster
Scaling application with RabbitMQ
Demo in management
Details http://goo.gl/BqQHjp
???
Breaking up a cluster
rabbit3$ rabbitmqctl stop_app
Stopping node rabbit@rabbit3 ...done.
rabbit3$ rabbitmqctl reset Resetting node
rabbit@rabbit3 ...done.
rabbit3$ rabbitmqctl start_app
Starting node rabbit@rabbit3 ...done.
Distributed Application
Shovel plugin
Loose coupling
they may have different users and virtual hosts;
they may run on different versions of RabbitMQ and
Erlang.
A process that replicates data
to the remote server
Scaling application with RabbitMQ
Cluster/LAN Cluster/LAN
Shovel
WAN friendly
rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
Demo time
RabbitMQ Federation
Federation Plugin
Loose coupling
WAN-friendly
Specificity
Scalability
Federation Plugin
RabbitMQ Federation
•Supports replication across different administrative
domains
•Supports mix of Erlang and RabbitMQ versions
•Supports Network Partitions
•Specificity - not everything has to be federated
Federated Exchanges
Scaling application with RabbitMQ
Topologies
Topologies
Small complete graph
Topologies
Fan-out
Topologies
Ring
Federated Queues
rabbitmqctl set_parameter federation-upstream my-upstream
'{"uri":"amqp://admin:admin@192.168.52.133","expires":36000
00}‘
rabbitmqctl set_policy federate-me '^DigitalWorld.'
'{"federation-upstream-set":"all"}' --priority 0 --apply-to
exchanges
Enterprise Integration Patterns for RabbitMQ
Connecting with SSL
Authentication and Authorization
Security
Monitoring RabbitMQ
https://github.com/jamesc/nagios-plugins-rabbitmq
http://newrelic.com/plugins/pivotal/95
https://www.youtube.com/watch?v=CAak2ayFc
https://github.com/zenoss/ZenPacks.zenoss.RabbitMQ
http://looselycoupledlabs.com/2014/08/monitoring-
rabbitmq/
http://www.rabbitmq.com/how.html have a section
Memory Alarms
Disk Alarms
https://www.rabbitmq.com/alarms.html
Docker+RabbitMQ
http://www.fig.sh/install.html
Load Test jMeter
Apache JMeter and the AMQP plugin to run load tests:
https://github.com/jlavallee/JMeter-Rabbit-AMQP
Real Time
Socket.IO/SignalR
http://goo.gl/ObvblZ
SignalR
http://goo.gl/xumPOG
A client that is
connected to one
server will not
receive messages
sent from another
server.
http://goo.gl/79T7aZ
RabbitMQ
RabbitMQ is extremely efficient,
widely deployed & tested
message broker but can hit
performance, if tuned for more
durability and reliability. It’s
more targeted towards serving
enterprise messaging with
advanced routing requirements.
Redis is quick to start,
lightweight & fast broker but
does Not support reliable
delivery Hence can be chosen
for applications where in case
system terminates, losing the
information about tasks for a
few minutes is Not critical.
http://goo.gl/J5ak0j
References
http://jmcle.github.io/rabbitmq-visualizer/
https://github.com/RabbitMQSimulator/RabbitMQSimulator
http://java.dzone.com/articles/docker-rabbitmq-cluster
Questions
@nahidupa

More Related Content

What's hot (20)

PDF
RabbitMQ fairly-indepth
Wee Keat Chin
 
PDF
RabbitMQ with python and ruby RuPy 2009
Paolo Negri
 
PDF
Improvements in RabbitMQ
Alvaro Videla
 
PPTX
The RabbitMQ Message Broker
Martin Toshev
 
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
All Things Open
 
PPTX
Spring RabbitMQ
Martin Toshev
 
PDF
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Paolo Negri
 
PDF
RabbitMQ Data Ingestion at Craft Conf
Alvaro Videla
 
PDF
Introduction to AMQP Messaging with RabbitMQ
Dmitriy Samovskiy
 
PDF
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
JAX London
 
PDF
RabbitMQ & Hutch
Peter Hamilton
 
PDF
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
James Titcumb
 
PDF
Troubleshooting RabbitMQ and services that use it
Michael Klishin
 
PDF
The Future of Messaging: RabbitMQ and AMQP
Eberhard Wolff
 
PDF
AMQP with RabbitMQ
Spyros Papageorgiou
 
PDF
Integrating PostgreSql with RabbitMQ
Gavin Roy
 
PDF
Messaging with RabbitMQ and AMQP
Eberhard Wolff
 
PDF
Distributed messaging with AMQP
Wee Keat Chin
 
KEY
Real time system_performance_mon
Tomas Doran
 
PPTX
Message Broker System and RabbitMQ
University of Alabama at Birmingham
 
RabbitMQ fairly-indepth
Wee Keat Chin
 
RabbitMQ with python and ruby RuPy 2009
Paolo Negri
 
Improvements in RabbitMQ
Alvaro Videla
 
The RabbitMQ Message Broker
Martin Toshev
 
Messaging Standards and Systems - AMQP & RabbitMQ
All Things Open
 
Spring RabbitMQ
Martin Toshev
 
Distributed and concurrent programming with RabbitMQ and EventMachine Rails U...
Paolo Negri
 
RabbitMQ Data Ingestion at Craft Conf
Alvaro Videla
 
Introduction to AMQP Messaging with RabbitMQ
Dmitriy Samovskiy
 
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
JAX London
 
RabbitMQ & Hutch
Peter Hamilton
 
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
James Titcumb
 
Troubleshooting RabbitMQ and services that use it
Michael Klishin
 
The Future of Messaging: RabbitMQ and AMQP
Eberhard Wolff
 
AMQP with RabbitMQ
Spyros Papageorgiou
 
Integrating PostgreSql with RabbitMQ
Gavin Roy
 
Messaging with RabbitMQ and AMQP
Eberhard Wolff
 
Distributed messaging with AMQP
Wee Keat Chin
 
Real time system_performance_mon
Tomas Doran
 
Message Broker System and RabbitMQ
University of Alabama at Birmingham
 

Viewers also liked (8)

PPTX
Developing highly scalable applications with Symfony and RabbitMQ
Alexey Petrov
 
PPTX
Отказоустойчивость и производительность
OpenStackRU
 
PPTX
Everybody loves html5,h4ck3rs too
Nahidul Kibria
 
PPTX
Banking malware zeu s zombies are using in online banking theft.
Nahidul Kibria
 
PPTX
G3t R00t at IUT
Nahidul Kibria
 
PPTX
Sending a for ahuh. win32 exploit development old school
Nahidul Kibria
 
PDF
Penetration testing web application web application (in) security
Nahidul Kibria
 
PPTX
Web Application Penetration Testing Introduction
gbud7
 
Developing highly scalable applications with Symfony and RabbitMQ
Alexey Petrov
 
Отказоустойчивость и производительность
OpenStackRU
 
Everybody loves html5,h4ck3rs too
Nahidul Kibria
 
Banking malware zeu s zombies are using in online banking theft.
Nahidul Kibria
 
G3t R00t at IUT
Nahidul Kibria
 
Sending a for ahuh. win32 exploit development old school
Nahidul Kibria
 
Penetration testing web application web application (in) security
Nahidul Kibria
 
Web Application Penetration Testing Introduction
gbud7
 
Ad

Similar to Scaling application with RabbitMQ (20)

PDF
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
Ontico
 
PDF
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
RabbitMQ Summit
 
PDF
IRJET- Development of Android Application for Device to Device Communication ...
IRJET Journal
 
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
POSSCON
 
PDF
quickguide-einnovator-3-rabbitmq
jorgesimao71
 
PPTX
RabbitMQ and AMQP with .net client library
Mohammed Shaban
 
PDF
RabbitMQ in PHP
Sergio Sicari
 
PPTX
RabbitMQ interview Questions and Answers
jeetendra mandal
 
PDF
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHPNW Dec 2014 Meetup)
James Titcumb
 
PDF
Enterprise Messaging with RabbitMQ.pdf
Ortus Solutions, Corp
 
PDF
Multiply like rabbits with rabbit mq
ColdFusionConference
 
PDF
Multiply like rabbits with rabbit mq
devObjective
 
KEY
Message queueing
Richard Jones
 
PDF
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Kacper Gunia
 
PDF
Message Queues a basic overview
Geshan Manandhar
 
PDF
What we've learned from running thousands of production RabbitMQ clusters - L...
RabbitMQ Summit
 
PPTX
Rabbit MQ
Tran Thanh Thi
 
PDF
Down the RabbitMQ Hole
BizTalk360
 
PDF
Webinar: Queues with RabbitMQ - Lorna Mitchell
Codemotion
 
KEY
Message Queueing - by an MQ noob
Richard Jones
 
Построение распределенной системы сбора данных с помощью RabbitMQ, Alvaro Vid...
Ontico
 
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
RabbitMQ Summit
 
IRJET- Development of Android Application for Device to Device Communication ...
IRJET Journal
 
Messaging Standards and Systems - AMQP & RabbitMQ
POSSCON
 
quickguide-einnovator-3-rabbitmq
jorgesimao71
 
RabbitMQ and AMQP with .net client library
Mohammed Shaban
 
RabbitMQ in PHP
Sergio Sicari
 
RabbitMQ interview Questions and Answers
jeetendra mandal
 
Adding 1.21 Gigawatts to Applications with RabbitMQ (PHPNW Dec 2014 Meetup)
James Titcumb
 
Enterprise Messaging with RabbitMQ.pdf
Ortus Solutions, Corp
 
Multiply like rabbits with rabbit mq
ColdFusionConference
 
Multiply like rabbits with rabbit mq
devObjective
 
Message queueing
Richard Jones
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Kacper Gunia
 
Message Queues a basic overview
Geshan Manandhar
 
What we've learned from running thousands of production RabbitMQ clusters - L...
RabbitMQ Summit
 
Rabbit MQ
Tran Thanh Thi
 
Down the RabbitMQ Hole
BizTalk360
 
Webinar: Queues with RabbitMQ - Lorna Mitchell
Codemotion
 
Message Queueing - by an MQ noob
Richard Jones
 
Ad

Recently uploaded (20)

PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Python basic programing language for automation
DanialHabibi2
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 

Scaling application with RabbitMQ

Editor's Notes

  • #5: Ask audience Any bus lover
  • #8: Advanced Message Queuing Protocol Message Queue Telemetry Transport—IBM-- binary packet payload--low bandwidth, high latency networks such as dial up lines and satellite links Simple/Streaming Text Oriented Messaging Protocol--browser, mobile app, or machine in real-time Publish from a protocol consume from another protocol
  • #10: Single point of failure
  • #24: Do not start showing other pattern
  • #28: sysv-rc-conf
  • #29: nano /etc/apt/sources.list deb http://www.rabbitmq.com/debian/ testing main wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc sudo apt-key add rabbitmq-signing-key-public.asc apt-get update sudo apt-get install rabbitmq-server
  • #30: update-rc.d -f rabbitmq-server remove update-rc.d -f rabbitmq-server defaults http://localhost:15672/ Sudo invoke-rc.d rabbitmq-server stop/start/etc apt-get install chkconfig chkconfig –list chkconfig rabbitmq-server on
  • #31: C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.3\sbin rabbitmq-plugins enable rabbitmq_management "C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.3\sbin" "rabbitmq-plugins enable rabbitmq_management“
  • #32: Show management console
  • #39: Again go to simulator
  • #45: routekey
  • #53: mnesia
  • #55: Message Queuing is limited in the size of documents that can be processed. The maximum size document that Message Queuing supports is 4 MB if the document is in ASCII. The message queue can handle a maximum of 2 MB if the document is in Unicode.
  • #57: /debug /production demo
  • #64: C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.3\sbin>rabbitmqctl jo in_cluster --ram rabbit@exdev Clustering node rabbit@JINOM with rabbit@exdev ... Error: {inconsistent_cluster,"OTP version mismatch: local node is 17.4, remote n ode R15B01"} Check erlang verssion erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' –noshell in_cluster --ram rabbit@exdev Clustering node rabbit@JINOM with rabbit@exdev ...
  • #66: On Unix systems, the cookie will be typically located in /var/lib/rabbitmq/.erlang.cookie or$HOME/.erlang.cookie. On Windows, the locations are C:\Users\Current User\.erlang.cookie(%HOMEDRIVE% + %HOMEPATH%\.erlang.cookie) orC:\Documents and Settings\Current User\.erlang.cookie, and C:\Windows\.erlang.cookie for RabbitMQ Windows service. If Windows service is used, the cookie should be placed in both places. As an alternative, you can insert the option "-setcookie cookie" in the erl call in the rabbitmq-serverand rabbitmqctl scripts.
  • #77: demo
  • #80: https://www.rabbitmq.com/federation.html rabbitmq-plugins enable rabbitmq_federation rabbitmq-plugins enable rabbitmq_federation_management
  • #89: demo
  • #92: https://www.youtube.com/watch?v=CAak2ayFcV0 https://github.com/zenoss/ZenPacks.zenoss.RabbitMQ http://looselycoupledlabs.com/2014/08/monitoring-rabbitmq/ http://www.rabbitmq.com/how.html have a section
  • #94: curl -L https://github.com/docker/fig/releases/download/1.0.1/fig-`uname -s`-`uname -m` > /usr/local/bin/fig; chmod +x /usr/local/bin/fig http://java.dzone.com/articles/docker-rabbitmq-cluster
  • #96: https://github.com/rajaraodv/rabbitpubsub