RabbitMQ. Parte 1. Introdução. Erlang, AMQP

Boa tarde, Habr! Desejo compartilhar um livro de referência de livros didáticos que consegui coletar RabbitMQe compactar em breves recomendações e conclusões.


Índice



Brevemente sobre AMQP


O AMQP (Advanced Message Queuing Protocol) é um protocolo aberto para transferência de mensagens entre componentes do sistema. A idéia principal é que subsistemas individuais (ou aplicativos independentes) podem trocar mensagens de maneira arbitrária por meio de um broker AMQP que fornece roteamento, possivelmente garante entrega, distribuição de fluxos de dados e assinatura para os tipos necessários de mensagens.

O protocolo AMQPapresenta três conceitos:


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


. , , — . , . ? ? .


Imagem 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