Exchange
- හුවමාරුකාරකය හෝ හුවමාරු ස්ථානය. ඒකට පණිවිඩ එවනවා. Exchange
පණිවිඩය බෙදා හරියි පෝලිම් එකක හෝ කිහිපයක. ඔහු පණිවිඩ පෝලිමකට යොමු කරයි සාදන ලද සබැඳි මත පදනම්ව (bindings
) එය සහ පෝලිම අතර.
Exchange
නොවේ exchange
කාවැද්දූ දත්ත ගබඩාවේ තන්තුවකි (මාර්ගගත කිරීමේ තර්කනය ඇති කේතය සහිත මොඩියුලයට සබැඳියක්)
පටුන
RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP සහ RPC RabbitMQ. 2 කොටස. හුවමාරුව අවබෝධ කර ගැනීම - RabbitMQ. 3 කොටස. පෝලිම් සහ බැඳීම් අවබෝධ කර ගැනීම
- RabbitMQ. 4 කොටස. පණිවිඩ සහ රාමු යනු කුමක්ද යන්න සමඟ කටයුතු කිරීම
- RabbitMQ. 5 කොටස: ප්රකාශනය සහ පරිභෝජන පණිවිඩ කාර්ය සාධනය
- RabbitMQ. 6 කොටස. සම්මේලනය සහ සවල මොඩියුල පිළිබඳ දළ විශ්ලේෂණය
- RabbitMQ. 7 කොටස. සම්බන්ධතාවය සහ චැනල් පිළිබඳ විස්තර
- RabbitMQ. 8 කොටස. .NET හි RabbitMQ
- 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 හුවමාරුව
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
පණිවිඩ රවුටින් අගයන් ගණනය කිරීමට පෙර ප්රධාන නාමයෙන් වර්ග කළ යුතුය. වෙනත් ආකාරයේ හුවමාරු වලට වඩා මන්දගාමී වේ.
ස්ථාවර Hashing හුවමාරුව
මෙම හුවමාරුකාරකය වේ 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
සහ මාර්ග ගණනට සාපේක්ෂව පෝලිම් අවම විය යුතුය.
ඊළඟ ලිපියෙන්, අපි පෝලිම් සහ බැඳීම් ගැන වැඩි විස්තර තේරුම් ගැනීමට පටන් ගනිමු.
යොමු
මූලාශ්රය: www.habr.com