Good afternoon, Habr! I want to share a textbook-reference book of knowledge that I managed to collect RabbitMQ
and compress into short recommendations and conclusions.
Table of contents
Briefly about AMQP
AMQP (Advanced Message Queuing Protocol) is an open protocol for transferring messages between system components. The main idea is that individual subsystems (or independent applications) can exchange messages in an arbitrary way through an AMQP broker that provides routing, possibly guarantees delivery, distribution of data streams, and subscription to the necessary types of messages.
The protocol AMQP
introduces three concepts:

exchange
( ) — . . (binding
)queue
() — , consumers
().binding
() — , .
TCP/IP.
Erlang
GitHub. RabbitMQ-server Erlang BEAM.
Erlang
Ericsson
1980-x , , , 99,999%. Erlang
, WhatsApp
. WhatsApp, Facebook $19
RabbitMQ
RabbitMQ – . AMQP . . RabbitMQ
AMQP
.
RabbitMQ
, producer
() . , - .
. , , — . , . ? ? .

RabbitMQ
:
- , ,
- .
- ,
- , , .
RPC
RPC (remote procedure call) RabbitMQ
. , RabbitMQ
, RPC
. , RabbitMQ
:

AMQP
. , . — . , Connection.Start
– Start
Connection
.
. . . , .
. Erlang
. (multiplexing). . , RabbitMQ .

RabbitMQ.Client:
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
public void CreateChannel()
{
_channel = _connection.CreateModel();
}
, , . , , , .
RabbitMQ?
AMQP
RabbitMQ
.
IIOT
AMQP
RabbitMQ
(-). MQTT Plugin RabbitMQ MQTT ( ).
Exchanges.