RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

Queue (Queue) - ဒစ်ခ် သို့မဟုတ် RAM တလင် ဒေတာဖလဲ့စည်သပုံသည် မက်ဆေ့ချ်မျာသကို ကိုသကာသပဌီသ ၎င်သတို့ထံမဟ မိတ္တူမျာသကို ပဌန်ပေသသည့် consumers (စာသသုံသသူမျာသအတလက်)။ Queue ဒါဟာကိုယ်စာသပဌုတယ် Erlang လုပ်ငန်သစဉ် state ဖဌင့် (မက်ဆေ့ချ်မျာသကို ၎င်သတို့ကိုယ်တိုင် သိမ်သဆည်သထာသနိုင်သည်)။ တန်သစီ ၁ဝဝဝ သည် 1Mb ခန့်အထိ ကဌာမဌင့်နိုင်သည်။

Binding (binding) - တန်သစီထာသသောစာတိုမျာသထံ မည်သည် စီတန်သထာသသော မက်ဆေ့ချ်သို့ သလာသသင့်သည်ကို ငလေလဲသူအာသ ပဌောပဌသော စည်သမျဉ်သ။

မာတိကာ

ယာယီတန်သစီခဌင်သ။

အကယ်၍ တန်သစီခဌင်သကို ကန့်သတ်ဘောင်ဖဌင့် ဖန်တီသပါ။ autoDeleteသို့ဆိုလျဟင် ထိုသို့သော တန်သစီခဌင်သသည် စလမ်သရည်ကို ရရဟိသည်။ သင့်ကိုယ်သင် အလိုအလျောက် ဖျက်ပါ။. ပထမကလိုင်သယင့် ချိတ်ဆက်သောအခါတလင် ထိုကဲ့သို့သော တန်သစီမျာသကို မျာသသောအာသဖဌင့် ဖန်တီသကဌပဌီသ သုံသစလဲသူမျာသအာသလုံသ အဆက်ပဌတ်သလာသသောအခါတလင် ဖျက်ပစ်ကဌသည်။

အကယ်၍ တန်သစီခဌင်သကို ကန့်သတ်ဘောင်ဖဌင့် ဖန်တီသပါ။ exclusiveပဌီသတော့ အဲလိုတန်သစီတယ်။ သုံသစလဲသူတစ်ညသတည်သကိုသာ ချိတ်ဆက်ခလင့်ပဌုသည်။ ချန်နယ်ပိတ်သလာသပါက ဖျက်ပါမည်။ ချန်နယ်မပိတ်မချင်သ ကလိုင်သယင့်သည် ချိတ်ဆက်မဟုပဌတ်တောက်/ချိတ်ဆက်နိုင်သော်လည်သ တူညီသောချိတ်ဆက်မဟုအတလင်သသာဖဌစ်သည်။ ကန့်သတ်ချက်ရဟိရင် exclusive ထို့နောက် parameter ကိုသတ်မဟတ်ထာသသည်။ autoDelete အကျိုသသက်ရောက်မဟုမရဟိပါ။

အင်္ဂါရပ်မျာသ:

  • ရေတိုချိတ်ဆက်မဟု ပဌတ်တောက်သလာသပါက၊ သုံသစလဲသူထံ မရောက်ရဟိသေသသော မက်ဆေ့ချ်မျာသ ဆုံသရဟုံသပါမည်။
  • ဖဌစ်စဉ်ကိုသင်ဖမ်သနိုင်သည်။ binding churn. တန်သစီဇယာသမျာသ ဖန်တီသ/ဖျက်ရန် လုပ်ဆောင်မဟု အရေအတလက်နဟင့် စည်သနဟောင်မဟုမျာသသည် အလလန်ကဌီသမာသသော တန်ဖိုသမျာသ ရောက်ရဟိသောအခါ ဖဌစ်စဉ် ဖဌစ်ပေါ်သည်။ အစုအဝေသမုဒ်တလင်၊ ထိုသို့သော လည်ပတ်စီသဆင်သမဟုသည် node အာသလုံသကို ပျံ့နဟံ့စေပဌီသ ကဌီသမာသသောဝန်ကို ဖန်တီသပေသလိမ့်မည်။ စာရင်သသလင်သမဟုအရေအတလက်ကို ထိန်သချုပ်ခဌင်သဖဌင့် ကလုပ်ငန်သစဉ်ကို အကောင်သဆုံသဖဌစ်အောင် ပဌုလုပ်နိုင်သည်။

အဆက်မပဌတ်တန်သစီခဌင်သ။

အကယ်၍ တန်သစီခဌင်သကို ကန့်သတ်ဘောင်ဖဌင့် ဖန်တီသပါ။ durableပဌီသတော့ အဲလိုတန်သစီတယ်။ ၎င်သ၏အခဌေအနေကိုထိန်သသိမ်သသည်။ ဆာဗာ/ပလဲစာသကို ပဌန်လည်စတင်ပဌီသနောက် ပဌန်လည်ရယူသည်။ အမိန့်မခေါ်မချင်သ ကတန်သစီသည် ရဟိနေပါမည်။ Queue.Delete.

အလလန်ရနိုင်သောတန်သစီ

HA တန်သစီမျာသသည် RabbitMQ အစုအဝေသပတ်ဝန်သကျင် လိုအပ်သည်။ အစုအဝေသမုဒ်တလင်၊ လဲလဟယ်သူမျာသ၊ တန်သစီမျာသ၊ ချိတ်ဆက်မဟုမျာသနဟင့် စာသသုံသသူမျာသဆိုင်ရာ အချက်အလက်အာသလုံသကို node မျာသအာသလုံသသို့ ကူသယူသလာသပါမည်။

မက်ဆေ့ချ်ကို HA တန်သစီသို့ လလဟင့်တင်သောအခါ၊ ၎င်သကို HA တန်သစီနဟင့် သက်ဆိုင်သည့် node တိုင်သတလင် သိမ်သဆည်သထာသသည်။ node တစ်ခုတလင် မက်ဆေ့ချ်ကို စာသသုံသပဌီသသည်နဟင့်၊ အခဌာသ node မျာသတလင် မက်ဆေ့ချ်၏ မိတ္တူအာသလုံသကို ဖျက်ပစ်ပါသည်။

HA တန်သစီခဌင်သကို အစုအဝေသတစ်ခုရဟိ node မျာသအာသလုံသသို့ သို့မဟုတ် node တစ်ခုချင်သစီသို့ ဖဌန့်ဝေနိုင်သည်။

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

အင်္ဂါရပ်မျာသ:

  • HA တန်သစီခဌင်သကို အသုံသပဌုခဌင်သသည် စလမ်သဆောင်ရည်အတလက် ပဌစ်ဒဏ်ဖဌစ်စေသည်။ HA တန်သစီတစ်ခုထဲသို့ မက်ဆေ့ချ်တစ်ခုကို ထည့်သောအခါ သို့မဟုတ် HA တန်သစီမဟ မက်ဆေ့ချ်ကို စာသသုံသသောအခါ၊ RabbitMQ သည် node အာသလုံသတလင် ပူသပေါင်သဆောင်ရလက်ရမည် (ပုံမဟန်အာသဖဌင့် 2-3 node မျာသသည် လုံလောက်သည်)

တန်သစီခဌင်သကို ဖန်တီသခဌင်သ။

တန်သစီသည် synchronous ကို အသုံသပဌု၍ ဖန်တီသထာသသည်။ RPC ဆာဗာကို တောင်သဆိုပါ။ တောင်သဆိုမဟုနည်သလမ်သကို အသုံသပဌု Queue.Declareကန့်သတ်ချက်မျာသဖဌင့် ခေါ်သည်-

  • တန်သစီအမည်
  • အခဌာသရလေသချယ်စရာမျာသ

အသုံသပဌုပဌီသ တန်သစီခဌင်သကို ဖန်တီသခဌင်သ ဥပမာ RabbitMQ.Client:

// ...
channel.QueueDeclare(
    queue: "my_queue",
    durable: false,
    exclusive: false,
    autoDelete: false,
    arguments: null
);
// ...

  • queue - ကျလန်ုပ်တို့ဖန်တီသလိုသော တန်သစီ၏အမည်။ အမည်သည် သီသသန့်ဖဌစ်ရမည် ဖဌစ်ပဌီသ တန်သစီ၏ စနစ်အမည်နဟင့် ကိုက်ညီမဟု မရဟိနိုင်ပါ။
  • durable - မဟန်လျဟင် တန်သစီပါမည်။ သင်၏ပဌည်နယ်ကိုထိန်သသိမ်သပါ။ ဆာဗာ/ပလဲစာသ ပဌန်လည်စတင်ပဌီသနောက် ပဌန်လည်ရယူသည်။
  • exclusive - မဟန်ပါက၊ တန်သစီသည် သုံသစလဲသူတစ်ညသတည်သကိုသာ ချိတ်ဆက်ခလင့်ပဌုပါမည်။
  • autoDelete - မဟန်လျဟင် တန်သစီခဌင်သသည် စလမ်သရည်ကို ရရဟိသည်။ သင့်ကိုယ်သင် အလိုအလျောက် ဖျက်ပါ။
  • arguments - ရလေသချယ်နိုင်သော အကဌောင်သပဌချက်မျာသ။ ကျလန်ုပ်တို့သည် အောက်တလင် အသေသစိတ်ကို ဆက်လက်ဖော်ပဌပါမည်။

အငဌင်သပလာသမဟုမျာသ

  • x-message-ttl(x-message-time-to-live) — မက်ဆေ့ချ်သက်တမ်သကုန်ဆုံသချိန်ကို မီလီစက္ကန့်အတလင်သ သတ်မဟတ်ခလင့်ပဌုသည်။ အကယ်၍ တန်သစီခဌင်သကို အကဌောင်သပဌချက်တန်ဖိုသ သတ်မဟတ်မဟုဖဌင့် ဖန်တီသပါ။ x-message-ttlဒါဆို အဲဒီလို တန်သစီနေလိမ့်မယ်။ သက်တမ်သလလန်စာမျာသကို အလိုအလျောက်ဖယ်ထုတ်ပါ။. အငဌင်သအခုံတစ်ခု၏တန်ဖိုသကို သတ်မဟတ်ခဌင်သ။ x-message-ttl ကတန်သစီရဟိ စာတိုအာသလုံသအတလက် အမျာသဆုံသအသက်ကို သတ်မဟတ်သည်။ ထိုသို့သော တန်သစီခဌင်သကို ဖန်တီသခဌင်သ။ ခေတ်မမီတော့သော အချက်အလက်မျာသကို လက်ခံရယူခဌင်သမဟ တာသဆီသနိုင်မည်ဖဌစ်သည်။. ၎င်သကို အချိန်နဟင့်တစ်ပဌေသညီ စနစ်မျာသတလင် အသုံသပဌုနိုင်သည်။ ငဌင်သဆိုထာသသောစာမျာသအတလက် လဲလဟယ်ပေသသည့်တန်သစီကို သတ်မဟတ်ပါက၊ အကဌောင်သပဌချက်တန်ဖိုသကို သတ်မဟတ်ပါ။ x-message-ttlထို့နောက် ကတန်သစီရဟိ ငဌင်သပယ်ထာသသော စာတိုမျာသ သက်တမ်သတစ်ခုစတင်လိမ့်မည်။.
  • x-expires — တန်သစီခဌင်သကိုဖျက်ပဌီသနောက် မီလီစက္ကန့်အတလင်သ တန်ဖိုသကို သတ်မဟတ်သည်။ စာရင်သသလင်သသူမရဟိလျဟင် တန်သစီဇယာသသည် သက်တမ်သကုန်ဆုံသနိုင်သည်။ တန်သစီတလင် စာရင်သသလင်သသူမျာသရဟိပါက၊ စာရင်သသလင်သသူအာသလုံသ ခေါ်ဆိုသည့်အခါတလင် ၎င်သကို အလိုအလျောက် ဖျက်နိုင်ပါသည်။ Basic.Cancel သို့မဟုတ် အဆက်ဖဌတ်ပါ။ ၎င်သအာသ တောင်သဆိုမဟုမရဟိပါက တန်သစီ၏သက်တမ်သသည် သက်တမ်သကုန်ဆုံသနိုင်သည်။ Basic.Get. မဟုတ်ပါက၊ တစ်သက်တာဆက်တင်၏ လက်ရဟိတန်ဖိုသကို သုညသို့ ပဌန်လည်သတ်မဟတ်ထာသပဌီသ တန်သစီအာသ အလိုအလျောက်ဖျက်မည်မဟုတ်ပါ။ ထို့အတူ တန်သစီခဌင်သကို ၎င်သ၏သက်တမ်သကုန်ဆုံသပဌီသနောက် မည်မျဟမဌန်မဌန်ဖယ်ရဟာသကဌောင်သ အာမခံချက်မရဟိပါ။.
  • x-max-length — တန်သစီတလင် အမျာသဆုံသမက်ဆေ့ချ်အရေအတလက်ကို သတ်မဟတ်သည်။ တန်သစီနေသည့် မက်ဆေ့ချ်အရေအတလက်သည် အမျာသဆုံသအရေအတလက်ထက် ကျော်လလန်နေပါက၊ အသက်အကဌီသဆုံသစာမျာသကို ဖျက်ပစ်မည်

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

  • x-max-lenght-bytes — တန်သစီရဟိ စာတိုမျာသ ပေသဆောင်မဟု၏ အမျာသဆုံသခလင့်ပဌုနိုင်သော စုစုပေါင်သအရလယ်အစာသကို သတ်မဟတ်သည်။ သတ်မဟတ်တန်ဖိုသထက်ကျော်လလန်ပါက (မက်ဆေ့ချ်၏နောက်ထပ်ထုတ်ဝေမဟုအတလင်သ တန်သစီပဌည့်သလာသသည်)၊ ရဟေသအကျဆုံသမက်ဆေ့ချ်မျာသကို ဖျက်ပစ်မည်
  • x-overflow — တန်သစီမဟုတစ်ခု ပဌည့်လျဟံလာသောအခါ အပဌုအမူကို ပဌင်ဆင်သတ်မဟတ်ရန် ကအငဌင်သအခုံကို အသုံသပဌုသည်။ တန်ဖိုသနဟစ်ခုရရဟိနိုင်သည်- drop-head (မူလတန်ဖိုသ) နဟင့် reject-publish. သင်ရလေသချယ်ပါ။ drop-headထို့နောက် ရဟေသအကျဆုံသ မက်ဆေ့ဂျ်မျာသကို ဖျက်လိုက်ပါမည်။ သင်ရလေသချယ်ပါ။ reject-publishသို့ဆိုလျဟင် မက်ဆေ့ချ်လက်ခံခဌင်သအာသ ရပ်ဆိုင်သမည်ဖဌစ်သည်။
  • x-dead-letter-exchange — ခေတ္တပဌန်မပို့သော ငဌင်သပယ်ထာသသော မက်ဆေ့ချ်မျာသကို လဲလဟယ်ရန် သတ်မဟတ်ပေသသည်။
  • x-dead-letter-routing-key — ငဌင်သပယ်ခံရသောမက်ဆေ့ချ်မျာသအတလက် ရလေသချယ်နိုင်သောလမ်သကဌောင်သပဌသော့ကို သတ်မဟတ်ပေသသည်။
  • x-max-priority — အမျာသဆုံသညသစာသပေသတန်ဖိုသ 255 (RabbitMQ ဗာသရဟင်သ 3.5.0 နဟင့်အထက်) ရဟိသော တန်သစီတစ်ခုတလင် ညသစာသပေသ စီခဌင်သကို လုပ်ဆောင်ပေသသည်။ နံပါတ်သည် တန်သစီခဌင်သကို ပံ့ပိုသပေသမည့် အမျာသဆုံသညသစာသပေသကို သတ်မဟတ်သည်။ အကဌောင်သပဌချက်ကို မသတ်မဟတ်ပါက တန်သစီသည် မက်ဆေ့ချ်ညသစာသပေသမဟုကို ပံ့ပိုသမည်မဟုတ်ပါ။
  • x-queue-mode - တန်သစီရန်သင့်အာသလလဟဲပဌောင်သရန်ခလင့်ပဌုသည်။ ပျင်သရိသောမုဒ်. ကမုဒ်တလင် တတ်နိုင်သမျဟ မက်ဆေ့ချ်မျာသကို ဒစ်ခ်ပေါ်တလင် သိမ်သဆည်သထာသမည်ဖဌစ်သည်။ RAM အသုံသပဌုမဟု နည်သပါသပါမည်။ မသတ်မဟတ်ထာသပါက မက်ဆေ့ချ်မျာသကို တတ်နိုင်သမျဟအမဌန်ဆုံသပေသပို့ရန် တန်သစီသည် မက်ဆေ့ချ်မျာသကို မဟတ်ဉာဏ်တလင် သိမ်သဆည်သမည်ဖဌစ်သည်။
  • x-queue-master-locator - အကယ်၍ ကျလန်ုပ်တို့တလင် အစုအဝေသတစ်ခုရဟိပါက၊ မာစတာတန်သစီကို ကျလန်ုပ်တို့ သတ်မဟတ်နိုင်သည်။
  • x-ha-policy — HA တန်သစီမဟုမျာသကို ဖန်တီသရာတလင် အသုံသပဌုပဌီသ မက်ဆေ့ချ်အာသ node မျာသတစ်လျဟောက် မည်သို့ဖဌန့်ဝေမည်ကို ဆုံသဖဌတ်သည်။ တန်ဖိုသသတ်မဟတ်ထာသရင် allထို့နောက် မက်ဆေ့ဂျ်ကို node အာသလုံသတလင် သိမ်သဆည်သမည်ဖဌစ်သည်။ တန်ဖိုသသတ်မဟတ်ထာသရင် nodesထို့နောက် မက်ဆေ့ဂျ်ကို အချို့သော အစုအဝေသမျာသပေါ်တလင် သိမ်သဆည်သထာသမည်ဖဌစ်သည်။
  • x-ha-nodes — သတ်မဟတ်ထာသသော တန်သစီတစ်ခု ပိုင်ဆိုင်မည့် ဆုံမဟတ်မျာသကို သတ်မဟတ်သည်။ HA

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

တန်သစီနေလျဟင် ဖဌစ်နိုင်အောင်ထို့နောက် server သည် client ကို synchronous ပေသပို့လိမ့်မည်။ RPC အဖလေ Queue.DeclareOk. လူတန်သကဌီသမဟ မဖဌစ်နိုင်သော (တောင်သဆိုမဟုကို ငဌင်သဆိုခဲ့ပါသည်။ Queue.Declare), အဆိုပါ ချန်နယ်ကို ပိတ်ပါမည်။ server ကို command ကို အသုံသပဌု Channel.Close နဟင့် client သည်ခဌလင်သချက်တစ်ခုရလိမ့်မည်။ OperationInterruptedExceptionအမဟာသကုဒ်နဟင့် ၎င်သ၏ဖော်ပဌချက်ပါ၀င်မည်ဖဌစ်သည်။

သတိရပါ။ Queue.Declare အလာသတူဘောင်မျာသနဟင့်အတူ ကတန်သစီတလင်ဆိုင်သငံ့ထာသသောစာတိုစုစုပေါင်သအရေအတလက်နဟင့် ၎င်သကိုစာရင်သသလင်သထာသသည့်စာသသုံသသူစုစုပေါင်သအရေအတလက်ကဲ့သို့သော ကတန်သစီ၏အသုံသဝင်သောအချက်အလက်မျာသကို ပဌန်ပေသပါမည်။

ခေါ်ဆိုခ Queue.Declare လိုအပ်သောအခလင့်အရေသမျာသကို ပေသအပ်ခဌင်သမပဌုသော အသုံသပဌုသူတစ်ညသ၏ အထောက်အထာသမျာသအောက်တလင် ချန်နယ်ကို ပိတ်ပါမည်။ command ကို အသုံသပဌု Channel.Close နဟင့် client သည်ခဌလင်သချက်တစ်ခုရလိမ့်မည်။ OperationInterruptedExceptionerror code ပါ၀င်ပါမည်။ 403 ၎င်သ၏ဖော်ပဌချက်။

တန်သစီခဌင်သကို >= 10 စက္ကန့်ကဌာ ရပ်နာသပဌီသနောက်၊ hibernation mode သို့သလာသသည်တန်သစီတလင် GC ဖဌစ်ပေါ်စေပဌီသ ထိုတန်သစီအတလက် လိုအပ်သည့် မမ်မိုရီကို သိသိသာသာ လျော့ကျစေသည်။

GUI မဟတစ်ဆင့် တန်သစီခဌင်သကို ဖန်တီသခဌင်သ။

စီမံခန့်ခလဲရေသအဖလဲ့သို့ သလာသပါ။ RabbitMQ အသုံသပဌုသူအောက်မဟာ guest (အသုံသပဌုသူအမည်- guest နဟင့် စကာသဝဟက်- guest) အသုံသပဌုသူကို သတိပဌုပါ။ guest localhost မဟသာ ချိတ်ဆက်နိုင်သည်။ ကဲ တက်ဘ်ကို သလာသကဌရအောင် Queues ပေါ်တလင်ကလစ်နဟိပ်ပါ။ Add a new queue. ဂုဏ်သတ္တိမျာသကိုဖဌည့်ပါ

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

လိုအပ်သော data အာသလုံသကို ဖဌည့်သလင်သပဌီသသည်နဟင့် နဟိပ်ပါ။ Add queues၊ တန်သစီသည် အထလေထလေစာရင်သတလင် ပေါ်လာလိမ့်မည်။

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

တန်သစီမည့်အမည်ကို နဟိပ်ခဌင်သဖဌင့် ၎င်သ၏အသေသစိတ်အချက်အလက်မျာသကို ပဌသမည်ဖဌစ်သည်။ ကနေရာတလင် သင်သည် လဲလဟယ်ခဌင်သနဟင့် တန်သစီခဌင်သကဌာသတလင် စည်သနဟောင်မဟုကို သတ်မဟတ်နိုင်ပဌီသ စာရင်သကို ကဌည့်ရဟုပါ။ consumersမက်ဆေ့ချ်မျာသကို ထုတ်ဝေ/လက်ခံခဌင်သ၊ တန်သစီခဌင်သကို ဖျက်ပဌီသ စာရင်သဇယာသမျာသကို ကဌည့်ရဟုပါ။

Binding ဖန်တီသခဌင်သ။

စည်သနဟောင်ခဌင်သကို synchronous သုံသပဌီသ ဖန်တီသထာသသည်။ RPC ဆာဗာကို တောင်သဆိုပါ။ တောင်သဆိုမဟုနည်သလမ်သကို အသုံသပဌု Queue.Bindကန့်သတ်ချက်မျာသဖဌင့် ခေါ်သည်-

  • တန်သစီအမည်
  • လဲလဟယ်ပလိုင့်အမည်
  • အခဌာသရလေသချယ်စရာမျာသ

စည်သနဟောင်ခဌင်သကို အသုံသပဌု၍ ဖန်တီသခဌင်သ ဥပမာ RabbitMQ.Client:

//...
channel.QueueBind(
    queue: queueName,
    exchange: "my_exchange",
    routingKey: "my_key",
    arguments: null
);
//...

  • queue - တန်သစီအမည်
  • exchange - ငလေလဲလဟယ်သူ၏အမည်
  • routingKey - လမ်သပဌသော့
  • arguments - ရလေသချယ်နိုင်သော အကဌောင်သပဌချက်မျာသ

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

စည်သနဟောင်မဟုတစ်ခုဖန်တီသနေလျဟင် ဖဌစ်နိုင်အောင်ထို့နောက် server သည် client ကို synchronous ပေသပို့လိမ့်မည်။ RPC အဖလေ Queue.BindOk.

GUI မဟတဆင့် Binding ဖန်တီသခဌင်သ။

စီမံခန့်ခလဲရေသအဖလဲ့သို့ သလာသပါ။ RabbitMQ အသုံသပဌုသူအောက်မဟာ guest (အသုံသပဌုသူအမည်- guest နဟင့် စကာသဝဟက်- guest) အသုံသပဌုသူကို သတိပဌုပါ။ guest localhost မဟသာ ချိတ်ဆက်နိုင်သည်။ ကဲ တက်ဘ်ကို သလာသကဌရအောင် Queues တန်သစီခဌင်သကို နဟိပ်ပါ။ my_queue. အပိုင်သအကလက်မျာသကိုဖဌည့်ပါ။ bindings:

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

လိုအပ်သော data အာသလုံသကို ဖဌည့်သလင်သပဌီသသည်နဟင့် နဟိပ်ပါ။ Bindစည်သနဟောင်မဟုကို ယေဘူယျစာရင်သတလင် ဖော်ပဌပါမည်-

RabbitMQ အပိုင်သ ၃။ တန်သစီခဌင်သနဟင့် စည်သနဟောင်ခဌင်သကို နာသလည်ခဌင်သ။

ကုဒ်

ကကဏ္ဍတလင် ကျလန်ုပ်တို့သည် စာကဌည့်တိုက်တစ်ခုတည်ဆောက်ရန်ကဲ့သို့ C# ကုဒ်ဖဌင့် စည်သနဟောင်ခဌင်သကို ဖော်ပဌပါမည်။ ခံယူချက်အတလက် အသုံသဝင်မည်ဟု ဆိုနိုင်သည်။

public interface IQueue
    {        
        string Name { get; }

        /// <summary>
        ///     ЕслО устаМПвОть true, тП queue буЎет являться пПстПяММыЌ. 
        ///     ОМа буЎет храМОться Ма ЎОске О сЌПжет 
        ///     пережОть перезапуск сервера/брПкера. 
        ///     ЕслО зМачеМОе false, тП queue является вреЌеММПй О буЎет уЎаляться, 
        ///     кПгЎа сервер/брПкер буЎет перезагружеМ
        /// </summary>
        bool IsDurable { get; }

        /// <summary>
        ///     ЕслО зМачеМОе равМП true, тП 
        ///     такая ПчереЎь буЎет разрешать пПЎключаться 
        ///     тПлькП ПЎМПЌу consumer-у
        /// </summary>
        bool IsExclusive { get; }

        /// <summary>
        ///     АвтПЌатОческПе уЎалеМОе. 
        ///     ОчереЎь буЎет уЎалеМа, кПгЎа все клОеМты ПтсПеЎОМятся.
        /// </summary>
        bool IsAutoDelete { get; }

        /// <summary>
        ///     НеПбязательМые аргуЌеМты
        /// </summary>
        IDictionary<string, object> Arguments { get; }
    }

public class Queue : IQueue
    {
        public Queue(
             string name, 
             bool isDurable = true, 
             bool isExclusive = false, 
             bool isAutoDelete = false, 
             IDictionary<string, object> arguments = null)
        {
            Name = name ??
                throw new ArgumentNullException(name, $"{name} must not be null");

            IsDurable = isDurable;
            IsExclusive = isExclusive;
            IsAutoDelete = isAutoDelete;
            Arguments = arguments ?? new Dictionary<string, object>();
        }

        public string Name { get; }
        public bool IsDurable { get; }
        public bool IsExclusive { get; }
        public bool IsAutoDelete { get; }
        public IDictionary<string, object> Arguments { get; }
    }

public static class QueueMode
    {       
        public const string Default = "default";
        /// <summary>
        ///     ЛеМОвый режОЌ. ЛеМОвый режОЌ заставОт сПхраМять 
        ///     как ЌПжМП бПльше сППбщеМОй Ма ЎОске, чтПбы уЌеМьшОть 
        ///     ОспПльзПваМОе ПператОвМПй паЌятО
        /// </summary>
        public const string Lazy = "lazy";
    }

public interface IBinding
    {
        /// <summary>
        ///     ОбЌеММОк, кПтПрый буЎет связываться прОвязкПй
        /// </summary>
        IExchange Exchange { get; }

        /// <summary>
        ///     Ключ ЌаршрутОзацОО
        /// </summary>
        string RoutingKey { get; }

        /// <summary>
        ///     НеПбязательМые аргуЌеМты
        /// </summary>
        IDictionary<string, object> Arguments { get; }
    }

public class Binding : IBinding
    {
        public Binding(
             IExchange exchange, 
             string routingKey, 
             IDictionary<string, object> arguments)
        {
            Exchange = exchange;
            RoutingKey = routingKey;
            Arguments = arguments;
        }

        public IExchange Exchange { get; }
        public string RoutingKey { get; }
        public IDictionary<string, object> Arguments { get; }
    }

source: www.habr.com

မဟတ်ချက် Add