ماسپښین ښه، حبر! زه غواړم د درسي کتاب - د پوهې د حوالې کتاب شریک کړم چې ما یې په راټولولو اداره کړ RabbitMQ
او په لنډو سپارښتنو او نتیجو کې راټولیږي.
فهرست
- RabbitMQ. 1 برخه. پیژندنه. Erlang، AMQP او RPC
- RabbitMQ. برخه 2. د تبادلې پوهه
- RabbitMQ. دریمه برخه. د قطارونو او بندیزونو پوهیدل
- RabbitMQ. 4 برخه. پوهیدل چې پیغامونه او چوکاټونه څه دي
- RabbitMQ. پنځمه برخه: د پیغام خپرول او مصرف کول
- RabbitMQ. 6 برخه. د فدراسیون او شاول ماډلونو عمومي کتنه
- RabbitMQ. برخه 7. د ارتباط او چینل په اړه توضیحات
- RabbitMQ. 8 برخه. په .NET کې RabbitMQ
- RabbitMQ. 9 برخه. څارنه
په لنډه توګه د AMQP په اړه
AMQP (د پرمختللی پیغام کتار پروتوکول) د سیسټم برخو ترمنځ د پیغامونو لیږدولو لپاره یو خلاص پروتوکول دی. اصلي نظر دا دی چې انفرادي فرعي سیسټمونه (یا خپلواک غوښتنلیکونه) کولی شي پیغامونه په خپل سري ډول د AMQP بروکر له لارې تبادله کړي، کوم چې روټینګ ترسره کوي، احتمالي تحویلي تضمینوي، د ډیټا جریان توزیع کوي، او د غوښتل شوي پیغام ډولونو کې ګډون کوي.
پروتوکول AMQP
درې مفهومونه معرفي کوي:
exchange
(د تبادلې نقطه یا تبادله) - پیغامونه ورته لیږل کیږي. د تبادلې نقطه پیغام توزیع کوي په یو یا ډیرو کتارونو کې. هغې پیغامونه کتار ته رسوي د جوړ شوي لینکونو پر بنسټ (binding
) د هغه او کتار ترمنځqueue
(قطار) - په ډیسک یا په رام کې د معلوماتو جوړښت د پیغامونو لینکونه ذخیره کوي او د پیغامونو کاپي ورکويconsumers
(د پیرودونکو لپاره)binding
( پابند) - یو قاعده چې د تبادلې نقطې ته وایي چې دا پیغامونه باید کوم کتار ته لاړ شي
پروتوکول په سر کې تیریږي
په لنډه توګه د Erlang په اړه
د پروژې سرچینې کوډ په ذخیره کې دی
Erlang
د شرکت لخوا رامینځته شویEricsson
د 1980s په مینځ کې د توزیع شوي ، خطا زغمونکي ، ریښتیني وخت سیسټم په توګه د غوښتنلیکونو لپاره چې 99,999٪ اپټایم ته اړتیا لري.Erlang
په مختلفو صنعتونو او عصري غوښتنلیکونو کې کارول کیږي، د بیلګې په توګهد WhatsApp جوړښت، کوم چې فیسبوک په 19 ملیارد ډالرو پیرودلی
په لنډه توګه د RabbitMQ په اړه
RabbitMQ
پروتوکول پلي کوي او بشپړوي AMQP
.
په کې د پیغام رسولو ماډل اصلي مفکوره RabbitMQ
خبره ده producer
(نشر) په مستقیم ډول کتار ته پیغامونه نه لیږي. په حقیقت کې، او ډیری وختونه، خپرونکی حتی نه پوهیږي چې ایا پیغام به کوم کتار ته وسپارل شي.
پرځای یې، خپرونکی کولی شي یوازې تبادلې ته پیغامونه واستوي. له یوې خوا، تبادله د خپرونکو څخه پیغامونه ترلاسه کوي، او له بلې خوا، دوی قطارونو ته لیږي. تبادله باید په سمه توګه پوه شي چې د هغه پیغام سره څه وکړي چې دا ترلاسه کوي. ایا دا باید په ځانګړي کتار کې اضافه شي؟ ایا دا باید په څو کتارونو کې اضافه شي؟ یا پیغام باید له پامه غورځول شي.
لنډ کار RabbitMQ
په لاندې ډول تشریح کیدی شي:
- خپرونکی یو ځانګړي تبادلې ته پیغام لیږي
- یو تبادله، د پیغام ترلاسه کولو سره، دا د هغې او کتار ترمنځ د پابند قواعدو سره سم یو یا ډیرو کتارونو ته رسوي
- قطار دې پیغام ته یوه حواله ذخیره کوي. پیغام پخپله په RAM یا ډیسک کې زیرمه شوی
- یوځل چې پیرودونکي د قطار څخه پیغام ترلاسه کولو لپاره چمتو وي ، سرور د لینک له لارې د پیغام یوه کاپي رامینځته کوي او لیږي.
- پیرودونکي پیغام ترلاسه کوي او بروکر ته تایید لیږي
- بروکر، د تایید په ترلاسه کولو سره، د پیغام یوه کاپي له کتار څخه لیرې کوي. بیا له رام او ډیسک څخه حذف کیږي
RPC
پروسه RabbitMQ
. د بیلګې په توګه، د مراجعینو سره د شرایطو په اړه ابتدايي خبرې اترې RabbitMQ
، یو مشخص بهیر څرګندوي RPC
. کله چې دا لړۍ بشپړه شي، RabbitMQ
د پیرودونکي غوښتنې منلو ته به چمتو وي:
همدارنګه په مشخصاتو کې AMQP
پیرودونکي او سرور دواړه کولی شي حکمونه صادر کړي. دا پدې مانا ده چې پیرودونکي د سرور سره خبرو اترو ته انتظار باسي. کمانډونه ټولګي او میتودونه دي. د مثال په ډول، Connection.Start
- د تلیفون طریقه Start
کلونه Connection
.
ارتباط او چینلونه
د مراجعینو او سرور ترمنځ د دې ډول معلوماتو تبادلې لپاره، چینلونه. چینلونه دننه جوړ شوي دي ځانګړې اړیکه. هر چینل د نورو چینلونو څخه جلا دی. په همغږي قضیه کې، دا ممکنه نده چې راتلونکی کمانډ اجرا کړئ تر هغه چې ځواب ترلاسه نشي.
د دې لپاره چې په موازي ډول د امرونو لیږلو وړتیا ولرئ، تاسو باید ډیری چینلونه پرانیزئ. هر چینل جلا جلا جوړوي Erlang
پروسه یوه اړیکه کولی شي څو چینلونه ولري (
په کارولو سره د ارتباط او چینل رامینځته کولو ساده مثال
// ...
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
// Включение автоматичекого восстановления
// соединения после сбоев сети
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}
د هر عملیات لپاره د نوي پیوستون پرانیستل په کلکه د دې په څیر هڅول کیږي د لوړ لګښت لامل شي. چینلونه هم باید دوامداره وي، مګر ډیری پروتوکول غلطۍ د دې سبب کیږي چې چینل بند شي، نو د چینل ژوند ممکن د ارتباط په پرتله لنډ وي.
RabbitMQ چیرته کارول کیږي؟
د مایکرو خدماتو په شرایطو کې، پروتوکول AMQP
او د هغې تطبیق په کې RabbitMQ
اکثرا لپاره کارول کیږي غیر متناسب تعامل د خدماتو ترمنځ.
په شرایطو کې IIOT
پروتوکول AMQP
او د هغې تطبیق په کې RabbitMQ
د سرورونو (سرور-سرور) ترمنځ د معلوماتو تبادلې لپاره کارول کیږي. پلگ ان هم وکاروئ
په راتلونکې مقاله کې به موږ په ډیر تفصیل سره د تبادلې په پوهیدو پیل وکړو.
مرجع
سرچینه: www.habr.com