مساء الخير يا هبر! أريد أن أشارك كتاب المعرفة المرجعية الذي تمكنت من جمعه RabbitMQ
وضغطه في توصيات واستنتاجات قصيرة.
جدول المحتويات
باختصار حول AMQP
AMQP (بروتوكول وضع الرسائل المتقدم في قائمة الانتظار) هو بروتوكول مفتوح لنقل الرسائل بين مكونات النظام. الفكرة الرئيسية هي أن الأنظمة الفرعية الفردية (أو التطبيقات المستقلة) يمكنها تبادل الرسائل بطريقة عشوائية من خلال وسيط AMQP الذي يوفر التوجيه ، وربما يضمن التسليم ، وتوزيع تدفقات البيانات ، والاشتراك في الأنواع الضرورية من الرسائل.
يقدم البروتوكول AMQP
ثلاثة مفاهيم:
![أرنب mq_1](https://habrastorage.org/getpro/habr/post_images/6f4/7e9/2a8/6f47e92a8d4ebca0e828abd0970596e9.jpg)
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
() . , - .
. , , — . , . ? ? .
![الصورة من: http://bit.ly/2U3PyJz](https://habrastorage.org/getpro/habr/post_images/1e8/006/fbb/1e8006fbb2212da5d284f246fa0f64bc.png)
RabbitMQ
:
- , ,
- .
- ,
- , , .
RPC
RPC (remote procedure call) RabbitMQ
. , RabbitMQ
, RPC
. , RabbitMQ
:
![أرنب mq_2](https://habrastorage.org/webt/e8/lr/jj/e8lrjjvfhlx_bnd4lusfntmukmo.jpeg)
AMQP
. , . — . , Connection.Start
– Start
Connection
.
. . . , .
. Erlang
. (multiplexing). . , RabbitMQ .
![rabbitmq_3](https://habrastorage.org/webt/iq/ne/q-/iqneq-_gmg-yq8bkk2-3_-mkvky.jpeg)
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.