සුභ සන්ධ්යාවක්, හබ්ර්! මට එකතු කර ගැනීමට හැකි වූ දැනුම පිළිබඳ පෙළපොත්-යොමු පොතක් බෙදා ගැනීමට මට අවශ්යයි RabbitMQ
සහ කෙටි නිර්දේශ සහ නිගමන වලට ඝනීභවනය කරන්න.
පටුන
- RabbitMQ. 1 කොටස. හැඳින්වීම. Erlang, AMQP සහ RPC
- RabbitMQ. 2 කොටස. හුවමාරුව අවබෝධ කර ගැනීම
- RabbitMQ. 3 කොටස. පෝලිම් සහ බැඳීම් අවබෝධ කර ගැනීම
- RabbitMQ. 4 වන කොටස. පණිවිඩ සහ රාමු යනු කුමක්දැයි වටහා ගැනීම
- RabbitMQ. 5 කොටස: ප්රකාශනය සහ පරිභෝජන පණිවිඩ කාර්ය සාධනය
- RabbitMQ. 6 කොටස. සම්මේලනය සහ සවල මොඩියුල පිළිබඳ දළ විශ්ලේෂණය
- RabbitMQ. 7 කොටස. සම්බන්ධතාවය සහ චැනල් පිළිබඳ විස්තර
- RabbitMQ. 8 කොටස. .NET හි RabbitMQ
- RabbitMQ. 9 කොටස. අධීක්ෂණය
AMQP ගැන කෙටියෙන්
AMQP (Advanced Message Queuing Protocol) යනු පද්ධති සංරචක අතර පණිවිඩ සම්ප්රේෂණය කිරීම සඳහා විවෘත ප්රොටෝකෝලයකි. මූලික අදහස නම්, තනි තනි උප පද්ධති (හෝ ස්වාධීන යෙදුම්) මාර්ගගත කිරීම සිදු කරන, සමහරවිට බෙදා හැරීම සහතික කරන, දත්ත ප්රවාහ බෙදා හැරීම සහ අපේක්ෂිත පණිවිඩ වර්ග වලට දායක වන AMQP තැරැව්කරුවෙකු හරහා අත්තනෝමතික ආකාරයෙන් පණිවිඩ හුවමාරු කර ගත හැකි බවයි.
ප්රොටෝකෝලය AMQP
සංකල්ප තුනක් හඳුන්වා දෙයි:
exchange
(හුවමාරු ස්ථානය හෝ හුවමාරුව) - පණිවිඩ එයට යවනු ලැබේ. හුවමාරු ලක්ෂ්යය පණිවිඩය බෙදා හරියි පෝලිම් එකක හෝ කිහිපයක. ඇය පණිවිඩ පෝලිමකට යොමු කරයි සාදන ලද සබැඳි මත පදනම්ව (binding
) ඔහු සහ පෝලිම අතරqueue
(පෝලිමේ) - තැටියේ හෝ RAM හි ඇති දත්ත ව්යුහයකි පණිවිඩ වෙත සබැඳි ගබඩා කර පණිවිඩ පිටපත් ලබා දෙයිconsumers
(පාරිභෝගිකයින්ට)binding
(බන්ධන) - රීතියක් මෙම පණිවිඩ යා යුත්තේ කුමන පෝලිමටද යන්න හුවමාරු ලක්ෂ්යයට කියයි
ප්රොටෝකෝලය ඉහළින් ක්රියාත්මක වේ
Erlang ගැන කෙටියෙන්
ව්යාපෘතියේ මූල කේතය ගබඩාවේ ඇත
Erlang
සමාගම විසින් සංවර්ධනය කරන ලදීEricsson
1980 දශකයේ මැද භාගයේදී 99,999% ක්රියාකාරී කාලයක් අවශ්ය යෙදුම් සඳහා බෙදා හරින ලද, දෝෂ-ඉවසන, තත්ය කාලීන පද්ධතියක් ලෙස.Erlang
විවිධ කර්මාන්තවල සහ නවීන යෙදුම්වල භාවිතා වේ, උදා.ෆේස්බුක් විසින් ඩොලර් බිලියන 19 කට මිලදී ගත් WhatsApp ගෘහ නිර්මාණ ශිල්පය
RabbitMQ ගැන කෙටියෙන්
RabbitMQ
ප්රොටෝකෝලය ක්රියාත්මක කරයි සහ අතිරේක කරයි AMQP
.
පණිවුඩකරණ ආකෘතියේ ප්රධාන අදහස RabbitMQ
දෙයක් වේ producer
(ප්රකාශක) පෝලිමට කෙලින්ම පණිවිඩ යවන්නේ නැත. ඇත්ත වශයෙන්ම, සහ බොහෝ විට, ප්රකාශකයා පණිවිඩය කිසියම් පෝලිමකට බෙදා හරිනු ඇත්ද යන්න පවා නොදනී.
ඒ වෙනුවට, ප්රකාශකයාට හුවමාරුව වෙත පමණක් පණිවිඩ යැවිය හැක. එක් අතකින්, හුවමාරුවට ප්රකාශකයින්ගෙන් පණිවිඩ ලැබෙන අතර අනෙක් පැත්තෙන් එය පෝලිම්වලට යවයි. හුවමාරුව තමාට ලැබෙන පණිවිඩය සමඟ කළ යුතු දේ හරියටම දැන සිටිය යුතුය. එය නිශ්චිත පෝලිමකට එකතු කළ යුතුද? එය බහු පෝලිම්වලට එකතු කළ යුතුද? නැතහොත් පණිවිඩය නොසලකා හැරිය යුතුය.
කෙටි වැඩ RabbitMQ
පහත පරිදි විස්තර කළ හැකිය:
- ප්රකාශකයා නිශ්චිත හුවමාරුවකට පණිවිඩයක් යවයි
- හුවමාරුවක්, පණිවිඩයක් ලැබීමෙන් පසු, එය සහ පෝලිම අතර බන්ධන රීති වලට අනුකූලව එය පෝලිම් එකකට හෝ වැඩි ගණනකට යොමු කරයි.
- පෝලිමේ මෙම පණිවිඩයට යොමුවක් ගබඩා කරයි. පණිවිඩය RAM හෝ තැටියේ ගබඩා කර ඇත
- පාරිභෝගිකයා පෝලිමේ සිට පණිවිඩයක් ලැබීමට සූදානම් වූ පසු, සේවාදායකයා සබැඳිය හරහා පණිවිඩයේ පිටපතක් නිර්මාණය කර යවයි.
- පාරිභෝගිකයාට පණිවිඩය ලැබෙන අතර තහවුරු කිරීම තැරැව්කරු වෙත යවයි
- තහවුරු කිරීමක් ලැබීමෙන් පසු තැරැව්කරු පෝලිමෙන් පණිවිඩයේ පිටපතක් ඉවත් කරයි. එවිට RAM සහ තැටියෙන් මකා දමයි
ආර්පීසී
ක්රියාවලිය RabbitMQ
. උදාහරණයක් ලෙස, සේවාදායකයාගේ කොන්දේසි පිළිබඳ මූලික සාකච්ඡා RabbitMQ
, යම් ක්රියාවලියක් පෙන්නුම් කරයි RPC
. මෙම අනුපිළිවෙල සම්පූර්ණ වූ පසු, RabbitMQ
සේවාදායකයාගෙන් ඉල්ලීම් පිළිගැනීමට සූදානම් වනු ඇත:
පිරිවිතරයේ ද AMQP
සේවාදායකයාට සහ සේවාදායකයාට විධාන නිකුත් කළ හැකිය. මෙයින් අදහස් කරන්නේ සේවාදායකයා සේවාදායකය සමඟ සන්නිවේදනය කිරීමට බලා සිටින බවයි. විධාන යනු පන්ති සහ ක්රම වේ. උදාහරණ වශයෙන්, Connection.Start
- ක්රමය ඇමතුම Start
පන්ති Connection
.
සම්බන්ධතාවය සහ නාලිකා
සේවාදායකයා සහ සේවාදායකයා අතර එවැනි තොරතුරු හුවමාරුවක් සඳහා, නාලිකා. නාලිකා නිර්මාණය කර ඇත නිශ්චිත සම්බන්ධතාවය. සෑම නාලිකාවක්ම වෙනත් නාලිකා වලින් හුදකලා වේ. සමමුහුර්ත අවස්ථාවෙහිදී, ප්රතිචාරයක් ලැබෙන තුරු ඊළඟ විධානය ක්රියාත්මක කළ නොහැක.
සමාන්තරව විධාන යැවීමට හැකි වීම සඳහා, ඔබට නාලිකා කිහිපයක් විවෘත කළ යුතුය. සෑම නාලිකාවක්ම වෙන වෙනම නිර්මාණය කරයි Erlang
ක්රියාවලිය. එක් සම්බන්ධතාවයකට නාලිකා කිහිපයක් තිබිය හැක (
භාවිතා කරමින් සම්බන්ධතාවයක් සහ නාලිකාවක් නිර්මාණය කිරීමේ සරල උදාහරණයක්
// ...
private void TryConnect()
{
var factory = new ConnectionFactory()
{
HostName = "host_name",
UserName = "user_name",
Password = "p@ssword",
// Включение автоматичекого восстановления
// соединения после сбоев сети
AutomaticRecoveryEnabled = true
};
_connection = factory.CreateConnection();
}
// ...
public void CreateChanel()
{
_channel = _connection.CreateModel();
// other options
}
එක් එක් මෙහෙයුම සඳහා නව සම්බන්ධතාවයක් විවෘත කිරීම මෙය දැඩි ලෙස අධෛර්යමත් වේ අධික වියදම් වලට තුඩු දෙනු ඇත. නාලිකා ද ස්ථීර විය යුතුය, නමුත් බොහෝ ප්රොටෝකෝල දෝෂ නාලිකාව වැසීමට හේතු වේ, එබැවින් නාලිකාවේ ආයු කාලය සම්බන්ධතාවයට වඩා කෙටි විය හැක.
RabbitMQ භාවිතා කරන්නේ කොහේද?
ක්ෂුද්ර සේවා සන්දර්භය තුළ, ප්රොටෝකෝලය AMQP
සහ එහි ක්රියාත්මක කිරීම RabbitMQ
සඳහා බොහෝ විට භාවිතා වේ අසමමුහුර්ත අන්තර්ක්රියා සේවා අතර.
සන්දර්භය තුළ IIOT
ප්රොටෝකෝලය AMQP
සහ එහි ක්රියාත්මක කිරීම RabbitMQ
සේවාදායකයන් අතර දත්ත හුවමාරුව සඳහා භාවිතා කරයි (සේවාදායක-සේවාදායකය). ප්ලගිනය ද භාවිතා කරන්න
ඊළඟ ලිපියෙන් අපි හුවමාරුව වඩාත් විස්තරාත්මකව තේරුම් ගැනීමට පටන් ගනිමු.
යොමු
මූලාශ්රය: www.habr.com