Good afternoon, Habr! I want to share a textbook-reference book of knowledge that I managed to collect RabbitMQand 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 AMQPintroduces 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.