Enterprise messaging system (EMS) is a messaging system allowing software applications and systems to communicate async. the term messaging can be used to describe e-mail, fax, instant messages and other services where humans read and send the messages

4.
AMQP Overview
● AMQP (Advanced Message Queuing Protocol) is a messaging protocol that enables
conforming client applications to communicate with conforming messaging middleware
brokers
● Messaging brokers receive messages from publisher and route them to consumers.
● Since It is a network protocol, the publishers, consumers and the broker can all reside on
different machines.
● A producer is a user application that sends messages.
● A queue is a buffer that stores messages.
● A consumer is a user application that receives messages.

5.
AMQP Overview
● Connection :- A connection is a TCP connection between your application and the RabbitMQ
broker. AMQP is an application level protocol that uses TCP for reliable delivery
● Channel :- A channel is a virtual connection inside a connection. When you are publishing or
consuming messages from a queue – it’s all done over a channel.
● Routing Key: Routing keybinding with the queue are ruled that allow the exchange to put
messages into the queue.
● Exchange: The exchange receives messages from the producer and from the other side it
pushes them to the queues.
● Binding : : A binding is a "link" that you set up to bind a queue to an exchange.

7.
RabbitMQ
Message Flow
The producer publishes a message to the
exchange
01
02
03
Image Placeholder
04
05
The exchange receives the message and is
now responsible for the routing of the
message.
A binding has to be set up between the
queue and the exchange.
The messages stay in the queue until they
are handled by a consumer
The consumer handles the message.

8.
Direct
Exchange
Image Placeholder
A direct exchange delivers messages to queues
based on the message routing key. A direct
exchange is ideal for the unicast routing of
messages

9.
Default Exchange
Image Placeholder
The default exchange is a direct exchange with no name (empty string) pre-declared by the broker. It has one
special property that makes it very useful for simple applications: every queue that is created is automatically
bound to it with a routing key which is the same as the queue name.
For example, when you declare a queue with the name of "search-indexing-online", the AMQP 0-9-1 broker will
bind it to the default exchange using "search-indexing-online" as the routing key (in this context sometimes
referred to as the binding key). Therefore, a message published to the default exchange with the routing key
"search-indexing-online" will be routed to the queue "search-indexing-online". In other words, the default
exchange makes it seem like it is possible to deliver messages directly to queues, even though that is not
technically what is happening.

10.
Fanout
Exchange
Image Placeholder
A fanout exchange routes messages to all of
the queues that are bound to it and the routing
key is ignored. If N queues are bound to a
fanout exchange, when a new message is
published to that exchange a copy of the
message is delivered to all N queues. Fanout
exchanges are ideal for the broadcast routing
of messages

11.
Topic
Exchange
Image Placeholder
Topic exchanges route messages to one
or many queues based on matching
between a message routing key and the
pattern that was used to bind a queue to
an exchangeTopic exchanges are
commonly used for the multicast routing
of messages.