Nyob zoo tav su, Habr! Kuv xav qhia ib phau ntawv nyeem-reference phau ntawv ntawm kev paub uas kuv tswj tau sau rau RabbitMQ
thiab condense rau hauv cov lus qhia luv luv thiab cov lus xaus.
Cov txheej txheem
- RabbitMQ. Ntu 1. Kev Taw Qhia. Erlang, AMQP thiab RPC
- RabbitMQ. Ntu 2. Nkag siab txog kev sib pauv
- RabbitMQ. Ntu 3. Nkag siab cov lus nug thiab kev khi
- RabbitMQ. Ntu 4. Nkag siab txog cov lus thiab cov ncej dab tsi
- RabbitMQ. Ntu 5: Kev Tshaj Tawm thiab Siv Cov Lus Qhia Ua Haujlwm
- RabbitMQ. Ntu 6. Txheej txheem cej luam ntawm Federation thiab Shovel Modules
- RabbitMQ. Part 7. Paub meej txog kev sib txuas thiab Chanel
- RabbitMQ. Part 8. RabbitMQ hauv .NET
- RabbitMQ. Ntu 9. Kev soj ntsuam
Luv luv txog AMQP
AMQP (Advanced Message Queuing Protocol) yog qhov qhib raws tu qauv rau kev xa xov ntawm cov kab ke. Lub tswv yim tseem ceeb yog tias ib tus neeg subsystems (lossis cov ntawv thov ywj pheej) tuaj yeem sib pauv cov lus hauv ib qho kev txiav txim siab los ntawm AMQP tus broker, uas ua haujlwm, muaj peev xwm lav kev xa khoom, faib cov ntaub ntawv ntws, thiab sau npe rau hom lus xav tau.
Raws tu qauv AMQP
qhia peb lub tswv yim:
exchange
(piv point lossis pauv) - cov lus raug xa mus rau nws. Sib pauv point faib cov lus nyob rau hauv ib los yog ntau dua kab. Nws xa cov lus mus rau ib kab raws li cov links tsim (binding
) ntawm nws thiab lub queuequeue
(queue) - cov qauv ntaub ntawv ntawm disk lossis hauv RAM uas khw muag khoom txuas rau cov lus thiab muab cov ntawv luam ntawm cov lusconsumers
(rau cov neeg siv khoom)binding
(binding) - ib txoj cai uas qhia qhov sib pauv taw tes uas queue cov lus no yuav tsum mus rau hauv
Cov txheej txheem khiav saum toj kawg nkaus
Luv luv txog Erlang
Qhov project qhov chaws code yog nyob rau hauv repository ntawm
Erlang
tsim los ntawm lub tuam txhabEricsson
nyob rau hauv nruab nrab-1980s raws li ib tug faib, txhaum-tolerant, real-time system rau daim ntawv thov yuav tsum tau 99,999% uptime.Erlang
siv nyob rau hauv ntau yam kev lag luam thiab kev siv niaj hnub, xws li.WhatsApp architecture, uas Facebook yuav rau $ 19 billion
Luv luv txog RabbitMQ
RabbitMQ
siv thiab ntxiv cov txheej txheem AMQP
.
Lub tswv yim tseem ceeb ntawm cov qauv kev xa xov hauv RabbitMQ
qhov yog producer
(Publisher) tsis xa cov lus ncaj qha mus rau kab. Qhov tseeb, thiab feem ntau, tus tshaj tawm tsis paub txawm tias cov lus yuav raug xa mus rau ib qho twg txhua.
Hloov chaw, tus tshaj tawm tsuas tuaj yeem xa cov lus mus rau kev sib pauv. Ntawm ib sab, kev sib pauv tau txais cov lus los ntawm cov tshaj tawm, thiab ntawm qhov tod tes, nws xa lawv mus rau queues. Kev sib pauv yuav tsum paub meej tias yuav ua li cas nrog cov lus nws tau txais. Nws puas yuav tsum tau ntxiv rau ib qho kab ke tshwj xeeb? Nws puas yuav tsum tau ntxiv rau ntau txoj kab? Los yog cov lus yuav tsum tsis quav ntsej.
Ua haujlwm luv luv RabbitMQ
tuaj yeem piav raws li hauv qab no:
- Tus tshaj tawm xa xov mus rau ib qho kev sib pauv tshwj xeeb
- Ib qho kev sib pauv, tau txais cov lus, xa nws mus rau ib lossis ntau lub queues raws li txoj cai khi ntawm nws thiab cov kab.
- Cov kab ntawv khaws cov lus siv rau cov lus no. Cov lus nws tus kheej yog khaws cia hauv RAM lossis hauv disk
- Thaum tus neeg siv khoom npaj tau txais cov lus los ntawm kab, tus neeg rau zaub mov tsim ib daim qauv ntawm cov lus ntawm qhov txuas thiab xa
- Cov neeg siv khoom tau txais cov lus thiab xa kev pom zoo rau tus broker
- Tus broker, thaum tau txais kev pom zoo, tshem tawm ib daim qauv ntawm cov lus los ntawm kab. Tom qab ntawd tshem tawm ntawm RAM thiab disk
RPC
txheej txheem RabbitMQ
. Piv txwv li, thawj zaug sib tham txog tus neeg siv khoom cov lus nrog RabbitMQ
, ua kom pom ib qho txheej txheem RPC
. Thaum cov txheej txheem no tiav, RabbitMQ
yuav npaj txais kev thov los ntawm tus neeg siv khoom:
Kuj nyob rau hauv specification AMQP
ob tus neeg siv khoom thiab tus neeg rau zaub mov tuaj yeem tshaj tawm cov lus txib. Qhov no txhais tau hais tias tus neeg siv khoom tab tom tos kev sib txuas lus nrog lub server. Cov lus txib yog cov chav kawm thiab cov txheej txheem. Piv txwv li, Connection.Start
β txoj kev hu Start
chav kawm Connection
.
Kev sib txuas thiab cov channel
Rau xws li cov ntaub ntawv sib pauv ntawm cov neeg siv khoom thiab server, raws. Channels yog tsim nyob rau hauv kev sib txuas tshwj xeeb. Txhua channel raug cais tawm ntawm lwm cov channel. Hauv cov ntaub ntawv synchronous, nws tsis tuaj yeem ua tiav cov lus txib tom ntej kom txog thaum tau txais cov lus teb.
Yuav kom xa cov lus txib nyob rau hauv parallel, koj yuav tsum qhib ob peb channel. Txhua channel tsim ib qho kev sib cais Erlang
txheej txheem. Ib qho kev sib txuas tuaj yeem muaj ntau yam channel (
Ib qho piv txwv yooj yim ntawm kev tsim kev sib txuas thiab siv channel
// ...
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
}
Qhib kev sib txuas tshiab rau txhua qhov kev ua haujlwm yog kev poob siab heev li qhov no yuav ua rau cov nqi siab. Cov channel tseem yuav tsum tsis tu ncua, tab sis ntau qhov kev cai yuam kev ua rau cov channel kaw, yog li lub neej ntawm cov channel yuav luv dua li qhov kev sib txuas.
RabbitMQ siv qhov twg?
Hauv cov ntsiab lus ntawm microservices, raws tu qauv AMQP
thiab nws qhov kev siv hauv RabbitMQ
feem ntau siv rau kev sib txuas lus asynchronous nruab nrab ntawm cov kev pabcuam.
Hauv cov ntsiab lus IIOT
raws tu qauv AMQP
thiab nws qhov kev siv hauv RabbitMQ
siv rau kev sib pauv ntaub ntawv ntawm servers (server-server). Kuj tseem siv lub plugin
Nyob rau hauv tsab xov xwm tom ntej peb yuav pib nkag siab txog kev sib pauv hauv kev nthuav dav ntxiv.
ua tim khawv
Tau qhov twg los: www.hab.com