Sawubona, Habr! Ngifuna ukwabelana ngencwadi eyisithenjwa yencwadi yolwazi engikwazile ukuqoqa kuyo RabbitMQ
bese ufinyela kube izincomo neziphetho ezimfushane.
Uhlu lokuqukethwe
- I-RabbitMQ. Ingxenye 1. Isingeniso. Erlang, AMQP kanye ne-RPC
- I-RabbitMQ. Ingxenye 2. Ukuqonda Ukuhwebelana
- I-RabbitMQ. Ingxenye 3. Ukuqonda Imigqa Nezibopho
- I-RabbitMQ. Ingxenye 4. Ukuqonda ukuthi iyini imilayezo namafreyimu
- I-RabbitMQ. Ingxenye 5: Ukushicilelwa Komlayezo kanye Nokusebenza Kokusetshenziswa
- I-RabbitMQ. Ingxenye 6. Ukubuyekezwa kwe-Federation kanye namamojula weFosholo
- I-RabbitMQ. Ingxenye 7. Imininingwane mayelana Nokuxhumana kanye ne-Chanel
- I-RabbitMQ. Ingxenye 8. RabbitMQ in .NET
- I-RabbitMQ. Ingxenye 9. Ukuqapha
Kafushane nge-AMQP
I-AMQP (I-Advanced Message Queuing Protocol) iyiphrothokholi evulekile yokudlulisa imilayezo phakathi kwezingxenye zohlelo. Umbono oyisisekelo ukuthi amasistimu angaphansi angawodwana (noma izinhlelo zokusebenza ezizimele) zingashintshanisa imilayezo ngendlela engafanele ngomthengisi we-AMQP, owenza umzila, okungenzeka aqinisekise ukulethwa, asabalalisa ukusakazwa kwedatha, futhi abhalisele izinhlobo zemilayezo efunekayo.
Isivumelwano AMQP
yethula imiqondo emithathu:
exchange
(iphoyinti lokushintshisana noma ukushintshaniswa) - imilayezo ithunyelwa kuyo. Iphoyinti lokushintshanisa ihambisa umlayezo kulayini owodwa noma ngaphezulu. Yena ithumela imilayezo kulayini ngokusekelwe ekuxhumaneni okudaliwe (binding
) phakathi kwakhe nolayiniqueue
(umugqa) - isakhiwo sedatha kudiski noma ku-RAM lokho igcina izixhumanisi zemiyalezo futhi inikeze amakhophi emilayezoconsumers
(kubathengi)binding
(ukubopha) - umthetho wokuthi itshela indawo yokushintshisana ukuthi yimuphi umugqa okufanele ungene kuwo le milayezo
Iphrothokholi isebenza phezulu
Kafushane ngo-Erlang
Ikhodi yomthombo wephrojekthi isendaweni yokugcina ngo
Erlang
ithuthukiswe yinkampaniEricsson
maphakathi nawo-1980 njengohlelo olusabalalisiwe, olubekezelela amaphutha, lwesikhathi sangempela lwezinhlelo zokusebenza ezidinga isikhathi sokuphumula esingu-99,999%.Erlang
esetshenziswa ezimbonini ezihlukahlukene kanye nezinhlelo zokusebenza zesimanje, isib.I-WhatsApp Architecture, i-Facebook eyithenge ngamaRandi ayizigidi eziyizinkulungwane ezingu-19
Kafushane mayelana ne-RabbitMQ
RabbitMQ
isebenzisa futhi yengeze iphrothokholi AMQP
.
Umqondo oyinhloko wemodeli yemiyalezo ku RabbitMQ
into ukuthi producer
(umshicileli) akathumeli imilayezo ngokuqondile kulayini. Eqinisweni, futhi kaningi, umshicileli akazi nokuthi umlayezo uzolethwa yini kunoma yimuphi ulayini nhlobo.
Kunalokho, umshicileli angathumela kuphela imilayezo ekushintshanisweni. Ngakolunye uhlangothi, ukuhwebelana kuthola imilayezo evela kubashicileli, kanti ngakolunye uhlangothi, kubathumela emigqeni. I-exchange kumele yazi kahle ukuthi izokwenzani ngomlayezo ewutholayo. Ingabe kufanele yengezwe kulayini othile? Ingabe kufanele yengezwe kolayini abaningi? Noma umlayezo kufanele uzibe.
Umsebenzi omfushane RabbitMQ
ingachazwa kanje:
- Umshicileli uthumela umlayezo ekushintshaneni okuthile
- Ukushintshisana, uma sekuthole umlayezo, kuwuhambisa kulayini owodwa noma ngaphezulu ngokuhambisana nemithetho ebophayo phakathi kwakho nolayini.
- Ulayini ugcina ireferensi yalo mlayezo. Umlayezo ngokwawo ugcinwa ku-RAM noma kudiski
- Uma umthengi eselungele ukuthola umlayezo ovela kulayini, iseva idala ikhophi yomlayezo ngesixhumanisi bese ithumela.
- Umthengi uthola umlayezo futhi athumele isiqinisekiso kumthengisi
- Umthengisi, lapho ethola isiqinisekiso, ususa ikhophi yomlayezo kulayini. Bese isusa ku-RAM nakudiski
I-RPC
Inqubo RabbitMQ
. Isibonelo, izingxoxo zokuqala mayelana nemibandela yeklayenti ne RabbitMQ
, ibonisa inqubo ethile RPC
. Uma lokhu kulandelana sekuqediwe, RabbitMQ
izolungela ukwamukela izicelo ezivela kuklayenti:
Futhi ekucacisweni AMQP
kokubili iklayenti neseva bangakhipha imiyalo. Lokhu kusho ukuthi iklayenti lilinde ukuxhumana neseva. Imiyalo ngamakilasi nezindlela. Ngokwesibonelo, Connection.Start
β indlela call Start
class Connection
.
Ukuxhumana namashaneli
Ngokwabelana ngolwazi olunjalo phakathi kweklayenti neseva, iziteshi. Iziteshi zidalwe ngaphakathi uxhumano oluthile. Isiteshi ngasinye sihlukanisiwe kwezinye iziteshi. Esimeni esivumelanayo, akwenzeki ukwenza umyalo olandelayo kuze kutholwe impendulo.
Ukuze ukwazi ukuthumela imiyalo ngokuhambisana, kufanele uvule iziteshi ezimbalwa. Isiteshi ngasinye sidala esehlukile Erlang
inqubo. Ukuxhumana okukodwa kungaba neziteshi eziningi (
Isibonelo esilula sokudala ukuxhumana nokusebenzisa isiteshi
// ...
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
}
Ukuvula uxhumano olusha lomsebenzi ngamunye akukhuthazwa kakhulu njengoba lokhu kuzoholela ezindlekweni eziphezulu. Iziteshi kufanele futhi ziphikelele, kodwa amaphutha amaningi ephrothokholi abangela ukuthi isiteshi sivalwe, ngakho-ke isikhathi sokuphila sesiteshi singase sibe sifushane kuneso sokuxhuma.
Isetshenziswa kuphi iRabbitMQ?
Kumongo we-microservices, iphrothokholi AMQP
kanye nokuqaliswa kwayo ku RabbitMQ
ngokuvamile esetshenziselwa ukusebenzisana kwe-asynchronous phakathi kwamasevisi.
Kumongo IIOT
umthetho olandelwayo AMQP
kanye nokuqaliswa kwayo ku RabbitMQ
esetshenziselwa ukushintshanisa idatha phakathi kwamaseva (iseva-iseva). Futhi sebenzisa i-plugin
Esihlokweni esilandelayo sizoqala ukuqonda Ukuhwebelana ngokuningiliziwe.
izithenjwa
Source: www.habr.com