RabbitMQ. Partie 1. Introduction. Erlang, AMQP

Bonjour, Habr! Je veux partager un livre de référence de manuels que j'ai réussi à rassembler RabbitMQet à compresser en de courtes recommandations et conclusions.


Table des matières



En bref sur l'AMQP


AMQP (Advanced Message Queuing Protocol) est un protocole ouvert pour transférer des messages entre les composants du système. L'idée principale est que des sous-systèmes individuels (ou des applications indépendantes) peuvent échanger des messages de manière arbitraire via un courtier AMQP qui assure le routage, garantit éventuellement la livraison, la distribution des flux de données et l'abonnement aux types de messages nécessaires.

Le protocole AMQPintroduit trois concepts:


rabbitmq_1


  • 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 () . , - .


. , , — . , . ? ? .


Image de: http://bit.ly/2U3PyJz


RabbitMQ :


  1. , ,
  2. .
  3. ,
  4. , , .

RPC


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


rabbitmq_2


AMQP . , . — . , Connection.StartStart Connection.



. . . , .


. Erlang . (multiplexing). . , RabbitMQ .


rabbitmq_3


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();
    // other options 
}

, , . , , , .


RabbitMQ?


AMQP RabbitMQ .


IIOT AMQP RabbitMQ (-). MQTT Plugin RabbitMQ MQTT ( ).


Exchanges.




All Articles