Exchange
- လဲလှယ်သူသို့မဟုတ်လဲလှယ်အချက်။ မက်ဆေ့ခ်ျတွေ ပို့တယ်။ Exchange
သတင်းစကားဖြန့်ဝေသည်။ တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော တန်းစီခြင်းတွင် သူ စာတိုများကို တန်းစီရန် လမ်းကြောင်းပေးသည်။ ဖန်တီးထားသောလင့်ခ်များကို အခြေခံ၍ (bindings
) ၎င်းနှင့်လူတန်းကြား။
Exchange
မဟုတ်ပါဘူး exchange
Built-in ဒေတာဘေ့စ်တွင် လမ်းကြောင်းတင်ခြင်းဆိုင်ရာ ယုတ္တိဗေဒတည်ရှိရာ ကုဒ်ပါသော ကြိုးတစ်ချောင်း (မော်ဂျူးသို့ လင့်ခ်)
မာတိကာ
RabbitMQ အပိုင်း ၁။ နိဒါန်း။ Erlang၊ AMQP နှင့် RPC RabbitMQ အပိုင်း 2။ နားလည်မှုဖလှယ်မှုများ - RabbitMQ အပိုင်း ၃။ တန်းစီခြင်းနှင့် စည်းနှောင်ခြင်းကို နားလည်ခြင်း။
- RabbitMQ အပိုင်း 4။ မက်ဆေ့ချ်များနှင့်ဘောင်များကို ကိုင်တွယ်ဖြေရှင်းခြင်း။
- RabbitMQ အပိုင်း 5- ထုတ်ဝေခြင်းနှင့် အသုံးပြုခြင်း မက်ဆေ့ချ်စွမ်းဆောင်ရည်
- RabbitMQ အပိုင်း 6။ အသင်းချုပ်နှင့် ဂေါ်ပြား မော်ဂျူးများ၏ ခြုံငုံသုံးသပ်ချက်
- RabbitMQ အပိုင်း ၇။ ချိတ်ဆက်မှုနှင့် Chanel အကြောင်းအသေးစိတ်
- RabbitMQ အပိုင်း ၈။ .NET တွင် RabbitMQ
- RabbitMQ အပိုင်း ၉။ စောင့်ကြည့်လေ့လာခြင်း။
တိုက်ရိုက်ချိန်း
Direct exchange
- လိုအပ်တဲ့အခါ သုံးတယ်။ သီးခြားစီတန်းများသို့ မက်ဆေ့ချ်ပေးပို့ပါ။. မက်ဆေ့ချ်ကို သတ်သတ်မှတ်မှတ်ဖြင့် လဲလှယ်သူထံ လွှင့်တင်ထားသည်။ Routing သော့ နှင့် အလားတူလမ်းကြောင်းပြသော့ဖြင့် ဤလဲလှယ်သူနှင့် ဆက်စပ်နေသည့် တန်းစီများအားလုံးသို့ ရောက်သည်။ Routing key သည် string တစ်ခုဖြစ်သည်။. Matching ကို အသုံးပြု၍ လုပ်ဆောင်သည်။ တန်းတူညီမျှမှုအတွက် ကြိုးများကို စစ်ဆေးခြင်း။.
မက်ဆေ့ဂျ်စီးဆင်းမှု၏ ဂရပ်ဖစ်ကိုယ်စားပြုမှု-
В rabbitmq
အယူအဆတစ်ခုရှိပါတယ်။ ပုံသေလဲလှယ်သူ။ ဤ direct exchange
နာမည်မရှိ။ ပုံသေလဲလှယ်သူကို အသုံးပြုပါက၊ မက်ဆေ့ချ်ကို အမည်နှင့် ညီမျှသော တန်းစီတစ်ခုသို့ ပို့ဆောင်မည်ဖြစ်သည်။ မက်ဆေ့ချ်လမ်းကြောင်းပြသော့.
ခေါင်းစဉ်ချိန်း
Topic exchange
- အလားတူ direct exchange
လမ်းကြောင်းကီးကို နှိုင်းယှဉ်ခြင်းဖြင့် ရွေးချယ်ထားသောလမ်းကြောင်းကို ဖွင့်ပေးသည်။ သို့သော် ဤကိစ္စတွင် သော့ကို ပေးထားသည်။ ပုံစံခွက်ဖြင့်. နမူနာပုံစံဖန်တီးသောအခါတွင် အသုံးပြုပါ။ 0
သို့မဟုတ် ထို့ထက်ပိုသော စကားလုံးများ (စာလုံးများ AZ
и az
နံပါတ်များ 0-9
) အစက်အပြင် သင်္ကေတများဖြင့် ပိုင်းခြားထားသည်။ *
и #
.
*
-အတိအကျဖြင့် အစားထိုးနိုင်ပါသည်။1
စကားလုံး#
- ဖြင့် အစားထိုးနိုင်ပါသည်။0
သို့မဟုတ် ထို့ထက်ပိုသော စကားလုံးများ
မက်ဆေ့ဂျ်စီးဆင်းမှု၏ ဂရပ်ဖစ်ကိုယ်စားပြုမှု-
ဗားရှင်းမှစတင်သည်။ RabbitMQ 2.4.0
routing algorithm သည် topic exchange
သည်အထိအလုပ်လုပ်ခဲ့သည်။ 145
အဆ ပိုမြန်တယ်။ ချဉ်းကပ်မှုကို အကောင်အထည်ဖော်ခြင်းဖြင့် ၎င်းတို့အောင်မြင်ခဲ့သည်။ a.b.c
, a.*.b.c
, a.#.c
и b.b.c
အောက်ပါဖွဲ့စည်းပုံဖြင့် ကိုယ်စားပြုပါမည်။
Pattern ကိုက်ညီမှုကို အမြစ်မှစတင်ကာ အပေါ်မှအောက်ခြေအထိ ရှာဖွေသည်။
အင်္ဂါရပ်များ:
- ဒီ exchanger ကိုအသုံးပြုမှုဖြစ်လာနိုင်ပါတယ်။ ဖြစ်နိုင်ချေရှိသော အနာဂတ်အက်ပ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် ရွေးချယ်မှုကောင်းတစ်ခု, ဘာဖြစ်လို့လဲဆိုတော့ မက်ဆေ့ချ်ကို အလားတူထုတ်ဝေနိုင်ရန် တင်းပလိတ်များကို အမြဲတမ်းစိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။
direct exchange
သို့မဟုတ်fanout exchange
- အသုံးပြုသောပုံစံများ
*
အများကြီးပိုမြန်တယ်သုံးတဲ့ ပုံစံတွေထက်#
. topic exchange
ဖြေးဖြေးdirect exchange
Fanout ချိန်း
Fanout exchange
- မက်ဆေ့ဂျ်အားလုံးကို တန်းစီများအားလုံးသို့ ပို့ပေးပါသည်။ မက်ဆေ့ချ်တွင် လမ်းကြောင်းပြသော့ကို သတ်မှတ်ထားသော်လည်း၊
အင်္ဂါရပ်များ:
RabbitMQ
လမ်းပြသော့များနှင့် ပုံစံများဖြင့် အလုပ်မလုပ်ပါ။ ၎င်းသည် စွမ်းဆောင်ရည်အပေါ် အပြုသဘောဆောင်သော သက်ရောက်မှုရှိသည်။ ဒါက အမြန်ဆုံးပါ။exchange
;- စားသုံးသူအားလုံးသည် မက်ဆေ့ဂျ်အားလုံးကို လုပ်ဆောင်နိုင်ရမည်။
မက်ဆေ့ဂျ်စီးဆင်းမှု၏ ဂရပ်ဖစ်ကိုယ်စားပြုမှု-
ခေါင်းစီးများလဲလှယ်ခြင်း။
Headers exchange
- အတွဲများ (သော့၊ တန်ဖိုး) ဂုဏ်သတ္တိများ နှိုင်းယှဉ်မှုအပေါ် အခြေခံ၍ သက်ဆိုင်ရာ တန်းစီများသို့ မက်ဆေ့ချ်များကို ညွှန်ကြားသည်။ headers
binding နှင့်အလားတူမက်ဆေ့ခ်ျပိုင်ဆိုင်မှု။ headers
ဒါဟာကိုယ်စားပြုတယ် Dictionary<ключ, значение>
.
အဘိဓာန်တွင် အထူးသော့ထည့်လျှင် x-match
အဓိပ္ပါယ်နဲ့ any
ထို့နောက် အတွဲများ (သော့၊ တန်ဖိုး) တစ်စိတ်တစ်ပိုင်း ကိုက်ညီပါက မက်ဆေ့ချ်ကို ဖြတ်သွားပါမည်။ ဤအပြုအမူသည် အော်ပရေတာနှင့် ဆင်တူသည်။ or
.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");
ပုံသေသော့ x-match
တန်ဖိုးတစ်ခုပါရှိသည်။ all
. ဆိုလိုသည်မှာ အတွဲများ (သော့၊ တန်ဖိုး) လုံးဝကိုက်ညီသောအခါတွင် မက်ဆေ့ဂျ်ကို လမ်းကြောင်းပြောင်းသွားခြင်းဖြစ်သည်။ ဤအပြုအမူသည် အော်ပရေတာနှင့် ဆင်တူသည်။ and
.
မက်ဆေ့ဂျ်စီးဆင်းမှု၏ ဂရပ်ဖစ်ကိုယ်စားပြုမှု-
အင်္ဂါရပ်များ:
- အပိုပြောင်းလွယ်ပြင်လွယ်
- အပိုထပ်ဆောင်းတွက်ချက်မှုအပေါ်။ ရည်ညွှန်းချက်၏ အတွဲများအားလုံး (သော့၊ တန်ဖိုး)
headers
မက်ဆေ့ချ်လမ်းကြောင်းတန်ဖိုးများကို မတွက်ချက်မီ သော့အမည်ဖြင့် စီရပါမည်။ အခြားလဲလှယ်မှုအမျိုးအစားများထက် နှေးကွေးသည်။.
တစ်သမတ်တည်း Hashing Exchange
ဤလဲလှယ်သူသည် RabbitMQ
.
Consistent-hashing exchange
(hash-consistent exchange) - မက်ဆေ့ချ်တစ်ခု၏ ဖြစ်နိုင်ချေရှိသော လက်ခံသူများဖြစ်ကြသည့် တန်းစီအများအပြားရှိသည့်အခါနှင့် ၎င်းတို့ကြားမှ လက်ကျန်ငွေကို သင်တင်ရန် လိုအပ်သည့်အခါတွင် အသုံးပြုသည်။ မက်ဆေ့ချ်သည် အလေးချိန်အလိုက် တန်းစီခြင်းနှင့် ဆက်စပ်နေသည် (အခြေအနေအလိုက် စာကြောင်းတန်ဖိုးတစ်ခု 0 - n
).
တန်းစီခြင်း၏ ညီမျှသောအလေးချိန် - တန်းစီတိုင်း လက်ခံရရှိကြောင်း ညွှန်ပြသည်။ တူညီသောပမာဏနှင့် ပတ်သက် မက်ဆေ့ချ်များ (မက်ဆေ့ဂျ်တစ်ခုစီကို တန်းစီတစ်ခုတည်းတွင်သာ ထည့်သွင်းပါမည်)။ တူညီသော မက်ဆေ့ချ်များ ဖြန့်ဝေခြင်းအတွက် အာမခံချက် အပြည့်အဝ မရှိပါ။.
မက်ဆေ့ဂျ်စီးဆင်းမှု၏ ဂရပ်ဖစ်ကိုယ်စားပြုမှု-
Hash
လမ်းကြောင်းပြသော့ သို့မဟုတ် ပိုင်ဆိုင်မှုအပေါ် အခြေခံ၍ တွက်ချက်ထားသည်။ headers
မက်ဆေ့ခ်ျများ လွှင့်တင်ထားသောစာများအားလုံးတွင် မတူညီသောလမ်းကြောင်းပြသော့များရှိလျှင် သို့မဟုတ် headers
ထို့နောက် အလေးချိန်အားဖြင့် ဖြန့်ဖြူးမှု ဖြစ်ပေါ်မည်ဖြစ်သည်။ သို့မဟုတ်ပါက၊ လမ်းပြသော့ကိုအသုံးပြုလိမ့်မည်၊ သို့မဟုတ် headers
.
တူညီသောတန်းစီခြင်းကိုအသုံးပြုသော စားသုံးသူများစွာရှိသည့် ဖြေရှင်းချက်ထက် စားသုံးသူများ၏ ဖြတ်သန်းမှု တိုးလာရန် လိုအပ်သည့်အခါ ကူညီသင့်သည်။
ငွေလဲသူများ ပေါင်းစပ်ခြင်း (E2E)
ဖလှယ်သူအားလုံး၏ အပြုအမူသည် ဆက်သွယ်ရေးကို အသုံးပြု၍ ပေါင်းစပ်နိုင်သည်။ Exchange-to-Exchange (လဲလှယ်သူ၏ပေါင်းစပ်မှုသတ်မှတ်ချက်တွင်မပါဝင်ပါ။ AMQP
. ၎င်းသည် ဘေးဘက်မှ ပရိုတိုကော တိုးချဲ့မှုတစ်ခုဖြစ်သည်။ RabbitMQ
).
မက်ဆေ့ဂျ်စီးဆင်းမှု၏ ဂရပ်ဖစ်ကိုယ်စားပြုမှု-
မသုံးဘူး E2E
လက်ရှိနှင့် ကြီးထွားလာနေသော လိုအပ်ချက်များနှင့် ကိုက်ညီသည့် မှန်ကန်သော အရွယ်အစားရှိ ဖွဲ့စည်းမှုပုံစံကို ကျွန်ုပ်တို့ ရှာဖွေနိုင်သည်။
Exchange တစ်ခုဖန်တီးပါ။
ဖလှယ်မှုအား synchronous ဖြင့် ဖန်တီးထားသည်။ RPC
ဆာဗာကို တောင်းဆိုပါ။ တောင်းဆိုမှုနည်းလမ်းကို အသုံးပြု Exchange.Declare
ကန့်သတ်ချက်များဖြင့် ခေါ်သည်-
- လဲလှယ်သူအမည်
- exchanger အမျိုးအစား
- အခြားရွေးချယ်စရာများ
ဖန်တီးမှုဥပမာ exchange
အားဖြင့်
//...
channel.ExchangeDeclare(
exchange: "my_exchange",
type: "direct",
durable: "false",
autoDelete: "false",
arguments: null
);
//...
exchange
- ကျွန်ုပ်တို့ဖန်တီးလိုသော ငွေလဲလှယ်သူ၏အမည်။ အမည်သည် ထူးခြားရမည်။type
- exchanger အမျိုးအစားdurable
- တပ်ဆင်လျှင်true
ထိုအခါexchange
အမြဲတမ်းဖြစ်လိမ့်မည်။ ၎င်းကို ဒစ်ခ်ပေါ်တွင် သိမ်းဆည်းထားမည်ဖြစ်ပြီး ဆာဗာ/ပွဲစား ပြန်လည်စတင်ခြင်းတွင် အသက်ရှင်ရပ်တည်နိုင်မည်ဖြစ်သည်။ ဖိုးလျှင်false
ထိုအခါexchange
ယာယီဖြစ်ပြီး ဆာဗာ/ပွဲစားကို ပြန်လည်စတင်သည့်အခါ ဖယ်ရှားပါမည်။autoDelete
- အလိုအလျောက်ဖျက်ခြင်း။Exchange
ဆက်စပ်တန်းစီများအားလုံးကို ဖျက်လိုက်သောအခါ ဖျက်လိုက်ပါမည်။arguments
ရွေးချယ်နိုင်သော အကြောင်းပြချက်များဖြစ်သည်။ အများစုကတော့ အငြင်းအခုံတွေကနေတဆင့် သတ်မှတ်ကြပါတယ်။alternative exchange
(အစားထိုးလဲလှယ်သူ) မက်ဆေ့ချ်သည် မူရင်းလမ်းကြောင်းကို ဖြတ်သန်း၍မရပါက၊ ၎င်းကို အခြားလမ်းကြောင်းတစ်လျှောက် ဖြတ်သန်းရန်အတွက် အစားထိုးလဲလှယ်မှုတစ်ခုသို့ ပေးပို့နိုင်ပါသည်။
ဖန်တီးမှုရှိရင် exchange
ဖြစ်နိုင်အောင်ထို့နောက် server သည် client ကို synchronous ပေးပို့လိမ့်မည်။ RPC
အဖွေ Exchange.DeclareOk
. ဖန်တီးမှုရှိရင် မဖြစ်နိုင်သော (တောင်းဆိုမှုကို ငြင်းဆိုခဲ့ပါသည်။ Exchange.Declare
), အဆိုပါ ချန်နယ်ကို ပိတ်ပါမည်။ asynchronous command ကို အသုံးပြု၍ ဆာဗာ Channel.Close
နှင့် client သည်ခြွင်းချက်တစ်ခုရလိမ့်မည်။
ပို့စ်မတင်မီ ငွေလဲလှယ်သူကို ဖန်တီးရပါမည်။ နဂိုရှိပြီးသား ဖလှယ်သူထံ မက်ဆေ့ချ်တစ်ခု ထုတ်ဝေပါက၊ RabbitMQ
တိတ်တိတ်လေး ဖယ်လိုက်ပါ။
Exchange GUI ဖန်တီးပါ။
စီမံခန့်ခွဲရေးအဖွဲ့သို့ သွားပါ။ RabbitMQ
အသုံးပြုသူအောက်မှာ guest
(အသုံးပြုသူအမည်- guest
နှင့် စကားဝှက်- guest
) အသုံးပြုသူကို သတိပြုပါ။ guest
localhost မှသာ ချိတ်ဆက်နိုင်သည်။ ကဲ တက်ဘ်ကို သွားကြရအောင် Exchanges
ပေါ်တွင်ကလစ်နှိပ်ပါ။ Add a new exchange
. ဂုဏ်သတ္တိများကိုဖြည့်ပါ
ဂုဏ်သတ္တိအများစုကို အထက်တွင်ဖော်ပြခဲ့ပြီးဖြစ်သည်။ ဤနေရာတွင် ကျွန်ုပ်တို့သတ်မှတ်ထားလျှင် သတိပြုပါ။ Internal
ထို့နောက် လဲလှယ်မှုအတွက်သာ အသုံးပြုနိုင်သည်။ E2E
. Producer
ထိုသို့သောဖလှယ်မှုသို့ မက်ဆေ့ချ်များ ပေးပို့နိုင်မည်မဟုတ်ပါ။
ကောက်ချက်
စနစ်တစ်ခုတည်ဆောက်သောအခါ topology ကိုဖော်ပြရန်အဆင်ပြေသည်။
တည်ဆောက်ထားသော ဂရပ်တွင် ရှိနေလျှင် ကန့်သတ်သတ်မှတ်ထားသည်။ routing သော့များ, သို့ဖြစ်လျှင်, အများအပြားဆီသို့ရှာဖွေရကျိုးနပ်သည်။ fanout exchange
routing key နှင့် ဆက်စပ်နေသော 1:1 ဖြစ်သည် ။ အဲဒါကို သတိရပါ။ fanout exchange
အမြန်ဆုံး။
လမ်းကြောင်း အရေအတွက် များလာလျှင် အဆုံးမရှိဖြစ်တတ်သည်။, အာရုံစိုက်ဖို့ထိုက်တန်ပါတယ်။ topic exchange
သို့မဟုတ် template မလိုအပ်ပါက၊ သင်ရွေးချယ်နိုင်သည်။ direct exchnge
, ဘာဖြစ်လို့လဲဆိုတော့ သူက ပိုမြန်တယ်။ topic exchange
.
အမျိုးမျိုးပေါင်းစပ် exchange
မှန်ကန်သောတစ်ခုကို ရှာဖွေရန် ကူညီသင့်သည်။ အရွယ်တင်နိုင်သော ဖွဲ့စည်းမှုပုံစံလက်ရှိနှင့် တိုးတက်နေသော စနစ်လိုအပ်ချက်များနှင့် ကိုက်ညီသည့်၊
ဂဏန်း exchange
လမ်းကြောင်းအရေအတွက်နှင့် နှိုင်းယှဉ်ပါက တန်းစီမှု အနည်းငယ်သာ ရှိသင့်သည်။
နောက်ဆောင်းပါးတွင်၊ Quues နှင့် Bindings များအကြောင်း ပိုမိုနားလည်လာပါမည်။
ကိုးကား
source: www.habr.com