AMQP (Advanced Message Queuing Protocol) ھڪ کليل پروٽوڪول آھي جيڪو سسٽم جي اجزاء جي وچ ۾ پيغامن کي منتقل ڪرڻ لاءِ. بنيادي خيال اهو آهي ته انفرادي سبسسٽم (يا آزاد ايپليڪيشنون) هڪ AMQP بروکر جي ذريعي هڪ خودمختيار طريقي سان پيغامن جي بدلي ڪري سگهن ٿا، جيڪو روٽنگ انجام ڏئي ٿو، ممڪن طور تي پهچائڻ جي ضمانت ڏئي ٿو، ڊيٽا اسٽريمز کي ورهائي ٿو، ۽ گهربل پيغام جي قسمن جي رڪنيت حاصل ڪري ٿو.
پروٽوڪول AMQP ٽن تصورن کي متعارف ڪرايو:
exchange (Exchange point or exchange) - پيغام ان ڏانهن موڪليا ويا آهن. مٽاسٽا پوائنٽ پيغام ورهائي ٿو هڪ يا وڌيڪ قطار ۾. هوءَ رستا پيغامن کي قطار ڏانهن ٺاهيل لنڪ جي بنياد تي (binding) هن ۽ قطار جي وچ ۾
queue (قطار) - ڊسڪ تي يا رام ۾ ڊيٽا جي جوڙجڪ جيڪا پيغامن جي لنڪ محفوظ ڪري ٿو ۽ پيغامن جون ڪاپيون ڏئي ٿو consumers (صارفين ڏانهن)
Erlang ڪمپني پاران ترقي ڪئي وئي Ericsson 1980s جي وچ ۾ ورهايل، غلطي برداشت ڪندڙ، حقيقي وقت واري نظام جي طور تي ايپليڪيشنن لاءِ 99,999٪ اپ ٽائم جي ضرورت آهي. Erlang مختلف صنعتن ۽ جديد ايپليڪيشنن ۾ استعمال ٿيل، مثال طور WhatsApp. توهان مضمون ۾ وڌيڪ پڙهي سگهو ٿا WhatsApp آرڪيٽيڪچر، جنهن کي فيسبوڪ $ 19 بلين ۾ خريد ڪيو
۾ پيغام جي ماڊل جو مکيه خيال RabbitMQ شيء آهي producer (پبلشر) سڌو سنئون قطار ۾ پيغام نه موڪليندو آهي. حقيقت ۾، ۽ اڪثر ڪري، پبلشر کي به خبر ناهي ته پيغام ڪنهن به قطار تائين پهچايو ويندو.
ان جي بدران، پبلشر صرف مٽائي ڏانهن پيغام موڪلي سگهي ٿو. هڪ طرف، مٽاسٽا پبلشرز کان پيغام وصول ڪري ٿي، ۽ ٻئي طرف، اهو انهن کي قطار ۾ موڪلي ٿو. مٽا سٽا کي ضرور ڄاڻڻ گهرجي ته ان کي حاصل ڪيل پيغام سان ڇا ڪجي. ڇا ان کي مخصوص قطار ۾ شامل ڪيو وڃي؟ ڇا ان کي گھڻن قطارن ۾ شامل ڪيو وڃي؟ يا پيغام کي نظر انداز ڪيو وڃي.
مختصر ڪم RabbitMQ هن ريت بيان ڪري سگهجي ٿو:
پبلشر هڪ مخصوص مٽاسٽا ڏانهن پيغام موڪلي ٿو
هڪ مٽا سٽا، هڪ پيغام وصول ڪرڻ بعد، ان کي هڪ يا وڌيڪ قطارن ڏانهن روانو ڪري ٿو ان جي ۽ قطار جي وچ ۾ پابند قاعدن جي مطابق
قطار هن پيغام جو حوالو محفوظ ڪري ٿو. پيغام پاڻ کي RAM يا ڊسڪ ۾ محفوظ ڪيو ويو آهي
بروکر، تصديق حاصل ڪرڻ تي، قطار مان پيغام جي ڪاپي ڪڍي ٿو. پوءِ ريم ۽ ڊسڪ مان ڊليٽ ڪري ٿو
آر پي سي
عمل RPC (ريموٽ پروسيسنگ ڪال) نيوڪليس سان لڳ ڀڳ سڀني ڳالهين کي هيٺ رکي ٿو RabbitMQ. مثال طور، ڪلائنٽ جي شرطن بابت ابتدائي بحث سان RabbitMQ، هڪ خاص عمل کي ظاهر ڪري ٿو RPC. هڪ دفعو اهو سلسلو مڪمل ٿيو، RabbitMQ ڪلائنٽ کان درخواستون قبول ڪرڻ لاء تيار ٿي ويندي:
پڻ وضاحتن ۾ AMQP ٻئي ڪلائنٽ ۽ سرور حڪم جاري ڪري سگھن ٿا. هن جو مطلب آهي ته ڪلائنٽ سرور سان رابطو ڪرڻ جو انتظار ڪري رهيو آهي. حڪم طبقن ۽ طريقا آهن. مثال طور، Connection.Start - طريقو ڪال Start класса Connection.
ڪنيڪشن ۽ چينل
ڪلائنٽ ۽ سرور جي وچ ۾ اهڙي معلومات جي تبادلي لاء، چينلز. چينل اندر ٺاهيا ويا آهن مخصوص ڪنيڪشن. هر چينل ٻين چينلن کان الڳ آهي. هم وقت سازي جي صورت ۾، اهو ممڪن ناهي ته ايندڙ حڪم تي عمل ڪرڻ جيستائين جواب ملي وڃي.
متوازي ۾ حڪم موڪلڻ جي قابل ٿيڻ لاء، توهان کي کولڻ لاء ڪيترائي چينل آهن. هر چينل هڪ الڳ ٺاهي ٿو Erlang عمل. ھڪڙي ڪنيڪشن ۾ ڪيترائي چينل ٿي سگھن ٿا (گهڻائي). هر چينل لاءِ ميموري ۾ ڪي خاص اڏاوتون ۽ شيون آهن. تنهن ڪري، وڌيڪ چينل هڪ ڪنيڪشن جي اندر آهن RabbitMQ وڌيڪ ميموري استعمال ڪري ٿو اهڙي رابطي کي منظم ڪرڻ لاء.
استعمال ڪندي ڪنيڪشن ۽ چينل ٺاهڻ جو هڪ سادي مثال 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 CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}
هر آپريشن لاءِ نئون ڪنيڪشن کولڻ جي سخت حوصلا افزائي ڪئي وڃي ٿي اعلي خرچن جي اڳواڻي ڪندو. چينل پڻ لڳاتار هجڻ گهرجن، پر ڪيتريون ئي پروٽوڪول غلطيون چينل کي بند ڪرڻ جو سبب بڻجن ٿيون، تنهن ڪري چينل جي زندگي ڪنيڪشن جي ڀيٽ ۾ ننڍو ٿي سگهي ٿي.
RabbitMQ ڪٿي استعمال ٿيندو آهي؟
microservices جي حوالي سان، پروٽوڪول AMQP ۽ ان تي عمل درآمد RabbitMQ اڪثر لاء استعمال ڪيو ويندو آهي هم وقت سازي رابطي خدمتن جي وچ ۾.
جي حوالي سان IIOT پروٽوڪول AMQP ۽ ان تي عمل درآمد RabbitMQ سرور جي وچ ۾ ڊيٽا مٽائڻ لاء استعمال ڪيو ويو (سرور-سرور). پلگ ان پڻ استعمال ڪريو MQTT پلگ ان RabbitMQ جيڪو پروٽوڪول جو نفاذ آهي ايم ڊي ٽي ٽي سينسر ۽ سرور جي وچ ۾ ڊيٽا کي منتقل ڪرڻ لاء گھٽ رفتار، تيز ويڪرائي ماحول ۾ (سپورٽ پروٽوڪولن جي مڪمل فهرست ڏنل آھي منصوبي جي ويب سائيٽ).
ايندڙ آرٽيڪل ۾ اسان ايڪسچينج کي وڌيڪ تفصيل سان سمجهڻ شروع ڪنداسين.