RabbitMQ. Parte 1. Introducción. Erlang, AMQP

Buenas tardes, Habr! Quiero compartir un libro de conocimiento de referencia de libros de texto que logré recopilar RabbitMQy comprimir en breves recomendaciones y conclusiones.


Tabla de contenido



Brevemente sobre AMQP


AMQP (Advanced Message Queuing Protocol) es un protocolo abierto para transferir mensajes entre componentes del sistema. La idea principal es que los subsistemas individuales (o aplicaciones independientes) pueden intercambiar mensajes de manera arbitraria a través de un intermediario AMQP que proporciona enrutamiento, posiblemente garantiza la entrega, distribución de flujos de datos y suscripción a los tipos de mensajes necesarios.

El protocolo AMQPintroduce tres conceptos:


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


. , , — . , . ? ? .


Imagen 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