3. Message broker
• is an intermediary program which translates the language of a system from one
Globally acceptable languages to another by way of a telecommunications medium
• is an architectural pattern for message validation, message transformation and
message routing
4. Name
Implementation Protocols
language
License
OS
Current
version
RabbitMQ Erlang
AMQP
Mozilla Public
License 1.1
Windows, Linux, OS X,
VxWorks
3.2.3
Apache
Java
ActiveMQ
JMS 1.1,
OpenWire,
REST,
Stomp,
WS Notification,
XMPP,
AMQP 1.0
Apache 2.0
Windows, OS X, Linux,
Solaris (any with JDK ≥ 5.0)
5.9.0
Apache
Qpid
Java, C++
AMQP
Apache 2.0
Windows, Debian, Fedora
0.24
SonicMQ
Java
JMS 1.1, J2EE 1.4,
XML, SOAP
Proprietary
Windows, RHEL, SuSE, AIX,
HP-UX
MSMQ
C++
MSMQ
Windows
component
Windows (95 - Server 2012)
5.0
ZeroMQ
C++
ZMTP
LGPLv3+
Linux, Windows, OS X
4.0.3
6. Advanced Message Queuing Protocol (AMQP)
• Open protocol,
• V 0.9.1 – Nov. 2008, v 1.0 – Oct. 2011
• Bank of America, Cisco Systems, Progress Software, JPMorgan Chase, Microsoft
Corporation, Novell, Red Hat, VMware and others
8. Terms
• Durable queue survives after broker restart
• Persistent messages are written to disk
• Per-Queue Message TTL determines how long an unconsumed message can live in a
queue before it is automatically deleted
• Per-Message TTL determines the TTL on a per-message basis
• Queue TTL determines how long an unused queue can live before it is automatically
deleted
• Message acknowledgments are turned on by default
• Nack (or Reject) = discard message or requeue itDead Letter Exchanges - messages
can be republished to another exchange when:
• The message is rejected (Nack or Reject) with requeue=false
• The TTL for the message expires
• The queue length limit is exceeded
12. Other exchange types
• Headers exchange - Routing based on message header content
• RabbitMQ: Custom exchanges for even message distribution between queues:
• consistent-hash
• x-random
13. RabbitMQ – AMQP v. 0.9.1+
Clustering
Several RabbitMQ servers on a local network can be clustered together, forming a
single logical broker.
Highly Available Queues
Queues can be mirrored across several machines in a cluster, ensuring that even in the
event of hardware failure your messages are safe.
Many Clients
There are RabbitMQ clients for almost any language you can think of.
Management UI
RabbitMQ ships with an easy-to use management UI that allows you to monitor and
control every aspect of your message broker.
16. Reliability
Failover (= fail-over) обход отказа, обработка *ситуации+ отказа в кластерных
конфигурациях - способность системы автоматически эластично реагировать на
отказ какого-либо устройства, разрыв связи и т. п., переключаясь на другое
(обычно резервное или находящееся в состоянии ожидания)
Loose coupling
Publish-subscribe (публикация/подписка) - отправители сообщений отправляют их
не конкретным получателям, а публикуют их в специальных каналах, не зная о
том, сколько и какие подписчики у этого канала. Подписчики же, проявляют
интерес к одному или нескольким каналам, из которых получают сообщения,
соответствующие их интересам, не задумываясь об отправителях. Подобное
разделение отправителей (публикующих) и получателей (подписчиков) позволяет
достигать большей масштабируемости и более динамичную топологию сети
22. Azure ServiceBus
AMQP 1.0 is a much more narrow standard than the 0.9.1. It only defines the network wire-level protocol for the exchange of messages
between two endpoints.