خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

Exchange ایکسچینجر یا ایکسچینج پوائنٹ۔ اس پر پیغامات بھیجے جاتے ہیں۔ Exchange پیغام تقسیم کرتا ہے۔ ایک یا زیادہ قطاروں میں۔ وہ پیغامات کو قطار میں بھیجتا ہے۔ بنائے گئے رابطوں کی بنیاد پر (bindings) اس کے اور قطار کے درمیان۔

Exchange نہیں ہے۔ ایرلنگ عمل. اسکیل ایبلٹی وجوہات کی بناء پر exchange - یہ بلٹ ان ڈیٹا بیس میں ایک لائن ہے (کوڈ والے ماڈیول کا لنک جہاں روٹنگ منطق ہے) دماغی بیماری. 1 ہزار ایکسچینجر صرف 1MB میموری استعمال کریں گے۔

مواد کی میز

  • خرگوش ایم کیو۔ حصہ 1۔ تعارف۔ ایرلنگ، AMQP اور RPC
  • خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا
  • خرگوش ایم کیو۔ حصہ 3۔ قطاروں اور پابندیوں کو سمجھنا
  • خرگوش ایم کیو۔ حصہ 4۔ یہ سمجھنا کہ پیغامات اور فریم کیا ہیں۔
  • خرگوش ایم کیو۔ حصہ 5: پیغام کی اشاعت اور استعمال کی کارکردگی
  • خرگوش ایم کیو۔ حصہ 6۔ فیڈریشن اور بیلچے کے ماڈیولز کا جائزہ
  • خرگوش ایم کیو۔ حصہ 7۔ کنکشن اور چینل کے بارے میں تفصیلات
  • خرگوش ایم کیو۔ حصہ 8. RabbitMQ in .NET
  • خرگوش ایم کیو۔ حصہ 9۔ نگرانی

براہ راست تبادلہ

Direct exchange - ضرورت پڑنے پر استعمال کیا جاتا ہے۔ مخصوص قطاروں میں پیغام پہنچانا. پیغام ایکسچینجر کو ایک مخصوص کے ساتھ شائع کیا جاتا ہے۔ روٹنگ کلید اور ان تمام قطاروں میں داخل ہو جاتا ہے جو اس ایکسچینجر سے ملتی جلتی روٹنگ کلید کے ساتھ جڑی ہوتی ہیں۔ روٹنگ کلید ایک تار ہے۔. استعمال کرتے ہوئے ملاپ پایا جاتا ہے۔ مساوات کے لیے تاروں کی جانچ کرنا.

پیغام کے بہاؤ کی گرافیکل نمائندگی:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

В rabbitmq ایک تصور ہے پہلے سے طے شدہ ایکسچینجر. یہ direct exchange گمنام. اگر ڈیفالٹ ایکسچینجر استعمال کیا جاتا ہے، تو پیغام کو ایک قطار میں بھیج دیا جائے گا جس کا نام برابر ہوگا۔ پیغام روٹنگ کلید.

موضوع کا تبادلہ

Topic exchange - اسی طرح direct exchange روٹنگ کلید کا موازنہ کرکے منتخب روٹنگ کو قابل بناتا ہے۔ لیکن، اس معاملے میں، کلید دی گئی ہے۔ ٹیمپلیٹ کے مطابق. ٹیمپلیٹ بناتے وقت استعمال کریں۔ 0 یا زیادہ الفاظ (حروف AZ и az اور نمبرز 0-9)، ایک نقطے کے ساتھ ساتھ علامتوں سے الگ * и #.

  • * - بالکل کی طرف سے تبدیل کیا جا سکتا ہے 1 لفظ
  • # - کی طرف سے تبدیل کیا جا سکتا ہے 0 یا زیادہ الفاظ

پیغام کے بہاؤ کی گرافیکل نمائندگی:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

ورژن کے بعد سے RabbitMQ 2.4.0 کے لیے روٹنگ الگورتھم topic exchange تک کام شروع کر دیا۔ 145 گنا تیز. انہوں نے یہ ایک نقطہ نظر متعارف کروا کر حاصل کیا۔ عمل درآمد کی کوشش کریں، جس میں ایک درخت کی ساخت کے طور پر نمونوں کی نمائندگی کرنا شامل ہے۔ مثال کے طور پر ٹیمپلیٹس a.b.c, a.*.b.c, a.#.c и b.b.c مندرجہ ذیل ڈھانچے کی طرف سے نمائندگی کی جائے گی:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

پیٹرن کو ملانے کی تلاش جڑ سے شروع ہوتی ہے اور اوپر سے نیچے تک جاتی ہے۔

خصوصیات:

  • اس ایکسچینجر کا استعمال بن سکتا ہے۔ ایپلی کیشن کی ممکنہ مستقبل کی ترقی کے لیے ایک اچھا انتخابکیونکہ ٹیمپلیٹس کو ہمیشہ اپنی مرضی کے مطابق بنایا جا سکتا ہے تاکہ پیغام کو اسی طرح شائع کیا جائے۔ direct exchange یا fanout exchange
  • ٹیمپلیٹس جو استعمال کرتے ہیں۔ * بہت تیزاستعمال کرنے والے ٹیمپلیٹس کے مقابلے میں #.
  • topic exchange آہستہ direct exchange

فین آؤٹ ایکسچینج

Fanout exchange - تمام پیغامات تمام قطاروں تک پہنچائے جاتے ہیں۔ یہاں تک کہ اگر پیغام میں روٹنگ کلید کی وضاحت کی گئی ہو۔

خصوصیات:

  • RabbitMQ روٹنگ کیز اور ٹیمپلیٹس کے ساتھ کام نہیں کرتا ہے۔ جس کا پیداواری صلاحیت پر مثبت اثر پڑتا ہے۔ یہ سب سے تیز ہے۔ exchange;
  • تمام صارفین کو تمام پیغامات پر کارروائی کرنے کے قابل ہونا چاہیے۔

پیغام کے بہاؤ کی گرافیکل نمائندگی:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

ہیڈرز کا تبادلہ

Headers exchange - (کلیدی، قدر) پراپرٹی کے جوڑوں کے موازنہ کی بنیاد پر متعلقہ قطاروں میں پیغامات بھیجتا ہے۔ headers بائنڈنگز اور اسی طرح کے پیغام کی خصوصیات۔ headers اس کی نمائندگی Dictionary<ключ, значение>.

اگر آپ لغت میں کوئی خاص کلید شامل کرتے ہیں۔ x-match معنی کے ساتھ any، پھر پیغام کو روٹ کیا جاتا ہے اگر (کلید، قدر) جوڑوں کا جزوی مماثلت ہو۔ یہ سلوک آپریٹر کی طرح ہے۔ or.

var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");

پہلے سے طے شدہ کلید x-match قدر پر مشتمل ہے۔ all. اس کا مطلب یہ ہے کہ اگر (کلید، قدر) جوڑے بالکل مماثل ہوتے ہیں تو پیغام کو روٹ کیا جاتا ہے۔ یہ سلوک آپریٹر کی طرح ہے۔ and.

پیغام کے بہاؤ کی گرافیکل نمائندگی:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

خصوصیات:

  • اضافی لچک
  • اضافی کمپیوٹیشنل اوور ہیڈ۔ کسی وصف کے تمام (کلیدی، قدر) جوڑے headers پیغام کی روٹنگ کی قدروں کو کمپیوٹنگ کرنے سے پہلے کلیدی نام سے ترتیب دیا جانا چاہیے۔ تبادلے کی دیگر اقسام کے مقابلے میں سست.

مسلسل ہیشنگ ایکسچینج

یہ ایکسچینجر ہے۔ رابطہ بحال کرو и میں نہیں بنایا گیا в RabbitMQ.

Consistent-hashing exchange (مسلسل ہیشنگ کے ساتھ تبادلہ) - اس وقت استعمال کیا جاتا ہے جب متعدد قطاریں ہوں جو پیغام کے ممکنہ وصول کنندہ ہوں، اور جب آپ کو ان کے درمیان بوجھ کو متوازن کرنے کی ضرورت ہو۔ قطار کے ساتھ پیغام کا تعلق وزن سے ہوتا ہے (مشروط سٹرنگ ویلیو from 0 - n).

قطاروں کا مساوی وزن - اشارہ کرتا ہے کہ ہر قطار وصول کرے گی۔ تقریبا ایک ہی رقم پیغامات (ہر پیغام کو صرف ایک قطار میں رکھا جائے گا)۔ پیغامات کی یکساں تقسیم کی مکمل ضمانت نہیں ہے۔.

پیغام کے بہاؤ کی گرافیکل نمائندگی:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

Hash روٹنگ کلید یا پراپرٹی کی بنیاد پر شمار کیا جاتا ہے۔ headers پیغامات اگر تمام شائع شدہ پیغامات میں مختلف روٹنگ کیز تھیں یا headers، پھر تقسیم وزن کے حساب سے ہوگی۔ دوسری صورت میں، روٹنگ کلید کا استعمال کیا جائے گا یا headers.

جب ایک قطار استعمال کرنے والے متعدد صارفین کے ساتھ صارفین کے تھرو پٹ کو حل سے زیادہ بڑھنے کی ضرورت ہو تو مدد ملنی چاہئے۔

یکجا کرنے والے ایکسچینجرز (E2E)

تمام ایکسچینجرز کے رویے کو مواصلات کا استعمال کرتے ہوئے ملایا جا سکتا ہے ایکسچینج سے ایکسچینج (Exchangers کو یکجا کرنا تفصیلات میں شامل نہیں ہے۔ AMQP. یہ طرف سے پروٹوکول کی توسیع ہے۔ RabbitMQ).

پیغام کے بہاؤ کی گرافیکل نمائندگی:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

کی قیمت پر۔ E2E ہم موجودہ اور بڑھتی ہوئی ضروریات دونوں کو پورا کرنے کے لیے درست توسیع پذیر کنفیگریشن تلاش کر سکتے ہیں۔

ایکسچینج بنائیں

ایکسچینجر کی تخلیق ہم آہنگی کا استعمال کرتے ہوئے ہوتی ہے۔ RPC سرور سے درخواست. درخواست طریقہ استعمال کرتے ہوئے کی جاتی ہے۔ Exchange.Declareپیرامیٹرز کے ساتھ کہا جاتا ہے:

  • ایکسچینجر کا نام
  • ایکسچینجر کی قسم
  • دیگر پیرامیٹرز

تخلیق کی مثال exchange کی مدد سے RabbitMQ.Client:

//...
channel.ExchangeDeclare(
    exchange: "my_exchange",
    type: "direct",
    durable: "false",
    autoDelete: "false",
    arguments: null
);
//...

  • exchange - ایکسچینجر کا نام جسے ہم بنانا چاہتے ہیں۔ نام منفرد ہونا چاہیے۔
  • type ایکسچینجر کی قسم
  • durable - اگر انسٹال ہوا ہے۔ trueپھر exchange مستقل ہو جائے گا. یہ ڈسک پر محفوظ ہو جائے گا اور سرور/بروکر کے دوبارہ شروع ہونے سے بچ سکتا ہے۔ اگر قدر falseپھر exchange یہ عارضی ہے اور سرور/بروکر کے دوبارہ شروع ہونے پر حذف کر دیا جائے گا۔
  • autoDelete - خود کار طریقے سے ہٹانا۔ Exchange جب اس سے وابستہ تمام قطاریں حذف ہو جائیں گی تو اسے حذف کر دیا جائے گا۔
  • arguments - اختیاری دلائل۔ اکثر، وہ دلائل کے ذریعے بیان کرتے ہیں۔ alternative exchange (متبادل ایکسچینجر)۔ اگر کوئی پیغام اصل راستے کے ساتھ سفر نہیں کر سکتا ہے، تو اسے ایک متبادل ایکسچینجر کو بھیجا جا سکتا ہے تاکہ کسی دوسرے راستے پر روانہ کیا جا سکے۔

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

اگر تخلیق exchange شاید، پھر سرور کلائنٹ کو ایک ہم وقت ساز بھیجے گا۔ RPC جواب Exchange.DeclareOk. اگر تخلیق ناممکن ہے (درخواست مسترد کر دی گئی۔ Exchange.Declare)، پھر چینل بند ہو جائے گا ایک غیر مطابقت پذیر کمانڈ کا استعمال کرتے ہوئے سرور Channel.Close اور کلائنٹ کو ایک استثنا ملے گا۔ Operation InterruptedException، جس میں ایرر کوڈ اور اس کی تفصیل ہوگی۔

پیغامات پوسٹ کرنے سے پہلے ایک ایکسچینجر بنانا ضروری ہے۔ اگر آپ کسی غیر موجود ایکسچینجر کو پیغام شائع کرتے ہیں - RabbitMQ خاموشی سے اسے ہٹا دیں گے.

GUI کے ذریعے ایکسچینج بنانا

ایڈمن پینل پر جائیں۔ RabbitMQ صارف کے تحت guest (صارف کا نام: guest اور پاس ورڈ: guest)۔ براہ کرم نوٹ کریں کہ صارف guest صرف لوکل ہوسٹ سے رابطہ کر سکتے ہیں۔ اب آئیے ٹیب پر جائیں۔ Exchanges اور پر کلک کریں Add a new exchange. خصوصیات کو بھریں:

خرگوش ایم کیو۔ حصہ 2۔ تبادلے کو سمجھنا

زیادہ تر خصوصیات اوپر بیان کی جا چکی ہیں۔ یہاں ہم نوٹ کرتے ہیں کہ اگر ہم سیٹ کرتے ہیں۔ Internal، تب تبادلہ صرف کے لئے استعمال کیا جاسکتا ہے۔ E2E. Producer اس طرح کے تبادلے کو پیغامات نہیں بھیج سکیں گے۔

حاصل يہ ہوا

ایک نظام کو تیار کرتے وقت، ٹوپولوجی کو بیان کرنا آسان ہے۔ روٹنگ ایک گراف کا استعمال کرتے ہوئے. لیکن اس سے پہلے کہ آپ گراف بنانا شروع کریں، زیادہ ٹریفک والے راستوں کو نمایاں کرنا ضروری ہے، کیونکہ وہ وہی ہیں جو مطالبہ کرتے ہیں اعلی تھرو پٹ (کارکردگی)۔ اگلا، آپ ٹریفک کی درجہ بندی کر سکتے ہیں۔ اور اس کے بعد ہی تعمیر شروع کریں۔

اگر تعمیر شدہ گراف میں موجود ہے۔ محدود سیٹ روٹنگ کیز، پھر یہ کئی کی طرف دیکھنے کے قابل ہے۔ fanout exchange، جو 1:1 روٹنگ کلید سے متعلق ہیں۔ ہمیں وہ یاد ہے۔ fanout exchange تیز ترین.

اگر راستوں کی تعداد لامحدودیت کی طرف مائل ہے۔، پھر آپ کو توجہ دینا چاہئے topic exchange یا، اگر ٹیمپلیٹ کی ضرورت نہیں ہے، تو آپ منتخب کر سکتے ہیں۔ direct exchngeکیونکہ وہ تیز ہے topic exchange.

مختلف کے مجموعے۔ exchange آپ کو صحیح تلاش کرنے میں مدد کرنی چاہئے۔ توسیع پذیر ترتیب، جو موجودہ اور بڑھتے ہوئے نظام کی ضروریات دونوں کو پورا کرتا ہے۔

نمبر exchange اور راستوں کی تعداد کے مقابلے قطاریں کم سے کم ہونی چاہئیں۔

اگلے مضمون میں ہم قطاروں اور بائنڈنگز کو مزید تفصیل سے سمجھنا شروع کریں گے۔

حوالہ جات

ماخذ: www.habr.com

نیا تبصرہ شامل کریں