Exchange
- የመለዋወጫ ወይም የመለዋወጫ ነጥብ. መልዕክቶች ወደ እሱ ይላካሉ. Exchange
መልእክቱን ያሰራጫል በአንድ ወይም በብዙ ወረፋዎች. እሱ መልዕክቶችን ወደ ወረፋ ያደርሳል በተፈጠሩ አገናኞች ላይ የተመሠረተ (bindings
) በእሱ እና በወረፋው መካከል.
Exchange
አይደለም exchange
አብሮ በተሰራው የውሂብ ጎታ ውስጥ ሕብረቁምፊ (የማዞሪያ ሎጂክ የሚገኝበት ኮድ ካለው ሞጁሉ ጋር የሚያገናኝ) ነው።
ማውጫ
RabbitMQ ክፍል 1. መግቢያ. Erlang፣ AMQP እና RPC RabbitMQ ክፍል 2. ልውውጦችን መረዳት - RabbitMQ ክፍል 3. ወረፋዎችን እና ማሰሪያዎችን መረዳት
- RabbitMQ ክፍል 4. መልዕክቶች እና ፍሬሞች ምንድን ናቸው ጋር ማስተናገድ
- RabbitMQ ክፍል 5፡ የመልዕክት ስራን ማተም እና መጠቀም
- RabbitMQ ክፍል 6. የፌዴሬሽኑ እና የአካፋ ሞጁሎች አጠቃላይ እይታ
- RabbitMQ ክፍል 7. ስለ ግንኙነት እና ቻኔል ዝርዝሮች
- RabbitMQ ክፍል 8. RabbitMQ በ NET
- RabbitMQ ክፍል 9. ክትትል
ቀጥተኛ ልውውጥ
Direct exchange
- አስፈላጊ ሆኖ ሲገኝ ጥቅም ላይ ይውላል ለተወሰኑ ወረፋዎች መልእክት ማድረስ. መልእክቱ ከተወሰነ ጋር ለለዋጩ ታትሟል የማዞሪያ ቁልፍ እና ከዚህ መለዋወጫ ጋር በተያያዙት ተመሳሳይ የማዞሪያ ቁልፍ ወደ ሁሉም ወረፋዎች ይገባል። የማዞሪያ ቁልፉ ሕብረቁምፊ ነው።. ማዛመድ የሚከናወነው በመጠቀም ነው። ገመዶችን ለእኩልነት ማረጋገጥ.
የመልእክቱ ፍሰት ስዕላዊ መግለጫ፡-
В rabbitmq
ጽንሰ-ሐሳብ አለ ነባሪ ልውውጥ. እሱ ነው direct exchange
ስም የለውም። ነባሪ መለዋወጫ ጥቅም ላይ ከዋለ, መልእክቱ እኩል የሆነ ስም ወዳለው ወረፋ ይዛወራሉ የመልእክት ማዞሪያ ቁልፍ.
ርዕስ ልውውጥ
Topic exchange
- ተመሳሳይ direct exchange
የማዞሪያ ቁልፉን በማነፃፀር የተመረጠ መስመርን ያስችላል። ነገር ግን, በዚህ ሁኔታ, ቁልፉ ተሰጥቷል በአብነት. አብነት ሲፈጥሩ ይጠቀሙ 0
ወይም ተጨማሪ ቃላት (ፊደላት AZ
и az
እና ቁጥሮች 0-9
), በነጥብ ተለያይተዋል, እንዲሁም ምልክቶች *
и #
.
*
- በትክክል ሊተካ ይችላል1
ቃሉ#
- ሊተካ ይችላል0
ወይም ተጨማሪ ቃላት
የመልእክቱ ፍሰት ስዕላዊ መግለጫ፡-
ከስሪት ጀምሮ RabbitMQ 2.4.0
የማዞሪያ ስልተ ቀመር ለ topic exchange
ድረስ መሥራት ጀመረ 145
ጊዜዎች ፈጣን። አሰራሩን በመተግበር ይህንን ማሳካት ችለዋል። a.b.c
, a.*.b.c
, a.#.c
и b.b.c
በሚከተለው መዋቅር ይወከላል፡-
ስርዓተ-ጥለት ማዛመድ ከሥሩ ጀምሮ እና ከላይ ወደ ታች በመሄድ ይፈለጋል።
ባህሪዎች:
- የዚህ መለዋወጫ አጠቃቀም ሊሆን ይችላል ለወደፊቱ የመተግበሪያ ልማት ጥሩ ምርጫ, ምክንያቱም መልእክቱ በተመሳሳይ መልኩ እንዲታተም አብነቶች ሁል ጊዜ ሊበጁ ይችላሉ።
direct exchange
ወይምfanout exchange
- የሚጠቀሙባቸው አብነቶች
*
በጣም ፈጣንከሚጠቀሙት አብነቶች ይልቅ#
. topic exchange
ዘገምተኛdirect exchange
የፋኖት ልውውጥ
Fanout exchange
- ሁሉም መልዕክቶች ለሁሉም ወረፋዎች ይደርሳሉ በመልእክቱ ውስጥ የማዞሪያ ቁልፍ ቢገለጽም.
ባህሪዎች:
RabbitMQ
በማዞሪያ ቁልፎች እና አብነቶች አይሰራም በአፈፃፀም ላይ አዎንታዊ ተጽእኖ ያለው. ይህ በጣም ፈጣኑ ነውexchange
;- ሁሉም ሸማቾች ሁሉንም መልዕክቶች ማስተናገድ መቻል አለባቸው;
የመልእክቱ ፍሰት ስዕላዊ መግለጫ፡-
ራስጌዎች ልውውጥ
Headers exchange
- የጥንዶች (ቁልፍ፣ እሴት) ንብረቶች ንፅፅር መሰረት በማድረግ መልእክቶችን ወደ ተዛማጅ ወረፋዎች ይመራል። headers
አስገዳጅ እና ተመሳሳይ የመልዕክት ንብረት. headers
ሀ Dictionary<ключ, значение>
.
ወደ መዝገበ-ቃላቱ ልዩ ቁልፍ ካከሉ x-match
ትርጉም ያለው any
, ከዚያም ጥንዶቹ (ቁልፍ, እሴት) በከፊል የሚዛመዱ ከሆነ መልእክቱ ይተላለፋል. ይህ ባህሪ ከኦፕሬተር ጋር ተመሳሳይ ነው or
.
var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");
ነባሪ ቁልፍ x-match
እሴት ይዟል all
. ይህ ማለት ጥንዶቹ (ቁልፍ፣ እሴት) ሙሉ ለሙሉ ሲዛመዱ መልእክቱ ይዛወራሉ። ይህ ባህሪ ከኦፕሬተር ጋር ተመሳሳይ ነው and
.
የመልእክቱ ፍሰት ስዕላዊ መግለጫ፡-
ባህሪዎች:
- ተጨማሪ ተለዋዋጭነት
- ተጨማሪ ስሌት። የባህሪው ሁሉም ጥንዶች (ቁልፍ፣ እሴት)
headers
የመልእክት ማዘዋወሪያ ዋጋዎችን ከማስላትዎ በፊት በቁልፍ ስም መደርደር አለበት። ከሌሎች የመለዋወጫ ዓይነቶች ቀርፋፋ.
ወጥ የሆነ የሃሺንግ ልውውጥ
ይህ ልውውጥ ነው። RabbitMQ
.
Consistent-hashing exchange
(በተለዋዋጭ ሃሽ መለዋወጥ) - የመልእክት ተቀባይ ሊሆኑ የሚችሉ ብዙ ወረፋዎች ሲኖሩ እና በመካከላቸው ያለውን ሸክም ማመጣጠን ሲያስፈልግ ጥቅም ላይ ይውላል። መልእክቱ ከወረፋው ጋር በክብደት የተያያዘ ነው (ሁኔታዊ የሕብረቁምፊ እሴት ከ 0 - n
).
የወረፋዎች ተመጣጣኝ ክብደት - እያንዳንዱ ወረፋ እንደሚቀበል ያመለክታል ስለ ተመሳሳይ መጠን መልዕክቶች (እያንዳንዱ መልእክት ወደ አንድ ወረፋ ብቻ ነው የሚቀመጠው)። ወጥ የሆነ የመልእክት ስርጭት ሙሉ ዋስትና የለም።.
የመልእክቱ ፍሰት ስዕላዊ መግለጫ፡-
Hash
በማዘዋወር ቁልፍ ወይም በንብረት ላይ ተመስርቶ ይሰላል headers
መልዕክቶች. ሁሉም የታተሙ መልዕክቶች የተለያዩ የማዞሪያ ቁልፎች ቢኖራቸው ወይም headers
, ከዚያም ስርጭቱ በክብደት ይከሰታል. አለበለዚያ የማዞሪያ ቁልፉ ጥቅም ላይ ይውላል, ወይም headers
.
የሸማቾች ፍጆታ ተመሳሳዩን ወረፋ በመጠቀም ከብዙ ሸማቾች መፍትሄ በላይ ማደግ ሲፈልግ መርዳት አለበት።
የመለዋወጫዎች ጥምረት (E2E)
የሁሉም ተለዋዋጮች ባህሪ ግንኙነትን በመጠቀም ሊጣመር ይችላል። ልውውጥ-ወደ-ልውውጥ (የመለዋወጫዎች ጥምረት በዝርዝሩ ውስጥ አልተካተተም። AMQP
. ይህ ከጎን በኩል የፕሮቶኮል ቅጥያ ነው። RabbitMQ
).
የመልእክቱ ፍሰት ስዕላዊ መግለጫ፡-
በ E2E
ሁለቱንም ወቅታዊ እና እያደጉ ያሉ መስፈርቶችን የሚያሟላ ትክክለኛውን ሊሰፋ የሚችል ውቅር ማግኘት እንችላለን።
ልውውጥ ፍጠር
መለዋወጫው የሚፈጠረው የተመሳሰለውን በመጠቀም ነው። RPC
ለአገልጋዩ ጥያቄ. ጥያቄው የቀረበው ዘዴውን በመጠቀም ነው። Exchange.Declare
, በመለኪያዎች ተጠርቷል:
- የመለዋወጫ ስም
- የመለዋወጫ አይነት
- ሌሎች አማራጮች
የፍጥረት ምሳሌ exchange
በ እገዛ
//...
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
(አማራጭ መለዋወጫ). መልእክቱ በዋናው መንገድ ማለፍ ካልቻለ በተለየ መንገድ እንዲሄድ ወደ ተለዋጭ ልውውጥ መላክ ይቻላል።
ፍጥረት ከሆነ exchange
ሊሆን ይችላል, ከዚያ አገልጋዩ ለደንበኛው የተመሳሰለ ይልካል RPC
መልስ Exchange.DeclareOk
. ፍጥረት ከሆነ የማይቻል ነው (በጥያቄው ላይ እምቢታ ነበር Exchange.Declare
) ፣ ከዚያ ቻናሉ ይዘጋል የማይመሳሰል ትእዛዝ በመጠቀም አገልጋይ Channel.Close
እና ደንበኛው የተለየ ሁኔታ ያገኛል
ከመለጠፍ በፊት ልውውጥ መፈጠር አለበት። ወደ ላልሆነ መለዋወጫ መልእክት ካተሙ - RabbitMQ
በጸጥታ ያስወግዱት።
ልውውጥ GUI ፍጠር
ወደ የአስተዳዳሪ ፓነል ይሂዱ RabbitMQ
በተጠቃሚው ስር guest
(የተጠቃሚ ስም፡- guest
እና የይለፍ ቃል፡ guest
). እባክዎን ተጠቃሚው መሆኑን ያስተውሉ guest
መገናኘት የሚችለው ከ localhost ብቻ ነው። አሁን ወደ ትሩ እንሂድ Exchanges
እና ጠቅ ያድርጉ Add a new exchange
. ንብረቶቹን ይሙሉ:
አብዛኛዎቹ ንብረቶች ከላይ ተገልጸዋል. እዚህ ካስቀመጥን እናስተውላለን Internal
, ከዚያ ልውውጡ ጥቅም ላይ ሊውል የሚችለው ለ ብቻ ነው E2E
. Producer
ወደ እንደዚህ አይነት ልውውጥ መልዕክቶችን መላክ አይችሉም.
መደምደሚያ
ስርዓትን ሲፈጥሩ ቶፖሎጂን ለመግለጽ ምቹ ነው
በተሰራው ግራፍ ውስጥ ካለ ውሱን ስብስብ የማዞሪያ ቁልፎች፣ እንግዲህ፣ ወደ ብዙ መመልከት ተገቢ ነው። fanout exchange
1፡1 ከመሄጃ ቁልፉ ጋር የሚዛመዱ። ያንን አስታውሱ fanout exchange
በጣም ፈጣኑ.
የመንገዶች ብዛት ከሆነ ወደ ወሰን አልባነት ያደላል።, ትኩረት መስጠት ተገቢ ነው topic exchange
ወይም, አብነት አስፈላጊ ካልሆነ, ከዚያ መምረጥ ይችላሉ direct exchnge
, ምክንያቱም እሱ ፈጣን ነው። topic exchange
.
የተለያዩ ጥምረት exchange
ትክክለኛውን ለማግኘት ሊረዳዎ ይገባል. ሊሰፋ የሚችል ውቅር, ሁለቱንም ወቅታዊ እና እያደገ የስርዓት መስፈርቶችን የሚያሟላ.
ՔԱՆԱԿ exchange
እና ወረፋዎች ከመንገዶች ብዛት ጋር ሲነፃፀሩ ዝቅተኛ መሆን አለባቸው.
በሚቀጥለው ርዕስ ላይ ስለ ወረፋዎች እና ማያያዣዎች የበለጠ ለመረዳት እንጀምራለን.
ማጣቀሻዎች
ምንጭ: hab.com