RabbitMQ. Nkebi 2. Nghọta mgbanwe

Exchange - mgbanwe ma ọ bụ ebe mgbanwe. A na-ezigara ya ozi. Exchange na-ekesa ozi n'otu ahịrị ma ọ bụ karịa. Ọ na-eduga ozi na kwụ n'ahịrị dabere na njikọ ndị emepụtara (bindings) n'etiti ya na kwụ n'ahịrị.

Exchange abụghị Usoro Erlang. Maka ihe kpatara scalability exchange - Nke a bụ ahịrị (njikọ na modul nwere koodu ebe mgbagha mgbagha dị) na nchekwa data arụnyere. mesia. 1 puku ndị mgbanwe ga-eri naanị 1MB nke ebe nchekwa.

Isiokwu dị n’ime

  • RabbitMQ. Nkebi nke 1. Okwu Mmalite. Erlang, AMQP na RPC
  • RabbitMQ. Nkebi 2. Nghọta mgbanwe
  • RabbitMQ. Nkebi 3. Ịghọta kwụ n'ahịrị na njikọ
  • RabbitMQ. Part 4. Ịghọta ihe ozi na okpokolo agba bụ
  • RabbitMQ. Nkebi nke 5: Nbipụta ozi na arụmọrụ oriri
  • RabbitMQ. Nkebi 6. Nyochaa nke Federation na shọvel modul
  • RabbitMQ. Nkebi nke 7. Nkọwa gbasara Njikọ na Chanel
  • RabbitMQ. Akụkụ 8. RabbitMQ na .NET
  • RabbitMQ. Nkebi 9. Nleba anya

Direct Exchange

Direct exchange - eji mgbe achọrọ zipu ozi na ahịrị ndị akọwapụtara. A na-ebipụta ozi ahụ na onye mgbanwe ya na otu igodo ụzọ wee banye n'ahịrị ahịrị niile ejikọrọ na onye ngbanwe a nwere igodo ntụgharị yiri ya. Igodo ntụgharị bụ eriri. A na-ahụ ndakọrịta site na iji ịlele eriri maka nhata.

Ngosipụta eserese nke mgbaba ozi:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

В rabbitmq enwere echiche onye mgbanwe ndabara. Nke a direct exchange enweghị aha. Ọ bụrụ na ejiri onye mgbanwe ndabara, a ga-ebufe ozi ahụ n'ahịrị nwere aha ha nhata igodo ntụgharị ozi.

Ntụgharị isiokwu

Topic exchange - yiri direct exchange na-eme ka usoro ụzọ họrọ site n'iji igodo ụzọ atụnyere. Ma, na nke a, a na-enye igodo ahụ dị ka template. Mgbe ị na-eke template, jiri 0 ma ọ bụ karịa okwu (akwụkwọ ozi AZ и az na ọnụọgụgụ 0-9), nke kewara site na ntụpọ, yana akara * и #.

  • * - nwere ike dochie ya kpọmkwem 1 okwu ahụ
  • # - nwere ike dochie ya 0 ma ọ bụ karịa okwu

Ngosipụta eserese nke mgbaba ozi:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

Ebe ọ bụ na nsụgharị RabbitMQ 2.4.0 usoro algorithm maka topic exchange malitere ịrụ ọrụ ruo mgbe 145 ugboro ngwa ngwa. Ha nwetara nke a site n'iwebata ụzọ gbalịa mmejuputa iwu, nke gụnyere na-anọchi anya ụkpụrụ dịka nhazi osisi. Dịka ọmụmaatụ ndebiri a.b.c, a.*.b.c, a.#.c и b.b.c usoro a ga-anọchi anya ya:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

A na-eme nchọpụta maka ịmekọrịta ụkpụrụ na-amalite site na mgbọrọgwụ wee na-esi n'elu ruo na ala.

Atụmatụ:

  • ojiji nke a Exchanger nwere ike ịghọ nhọrọ dị mma maka mmepe ngwa ngwa ga-eme n'ọdịnihu, n'ihi na Enwere ike ịhazi ndebiri mgbe niile ka e wee bipụta ozi ahụ n'otu ụzọ ahụ direct exchange ma ọ bụ fanout exchange
  • ndebiri na-eji * ngwa ngwakarịa ndebiri ndị na-eji #.
  • topic exchange Jiri Nwayọọ direct exchange

Mgbanwe Fanout

Fanout exchange - a na-ezipụ ozi niile na kwụ n'ahịrị niile ọbụlagodi na akọwapụtara igodo ụzọ n'ime ozi ahụ.

Atụmatụ:

  • RabbitMQ anaghị arụ ọrụ na igodo ụzọ na ndebiri nke nwere mmetụta dị mma na mmepụta ihe. Nke a bụ nke kacha ọsọ exchange;
  • ndị niile na-azụ ahịa ga-enwe ike ịhazi ozi niile;

Ngosipụta eserese nke mgbaba ozi:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

Ngbanwe nkụnye eji isi mee

Headers exchange - na-ebuga ozi gaa n'ahịrị emetụtara dabere na ntụnyere (isi, uru) ụzọ abụọ ihe onwunwe headers njikọ na njirimara ozi yiri ya. headers bụ a Dictionary<ключ, значение>.

Ọ bụrụ na ịtinye igodo pụrụ iche na ọkọwa okwu x-match nwere ihe ọ pụtara any, mgbe ahụ, a na-ebugharị ozi ahụ ma ọ bụrụ na enwere otu akụkụ nke (isi, uru) ụzọ abụọ. Omume a yiri onye ọrụ or.

var bindingArguments = new Dictinary<String, Object>();
bindingArguments.add("x-match", "any");

Igodo izizi x-match nwere uru all. Nke a pụtara na a na-ebugharị ozi ahụ ma ọ bụrụ na ụzọ abụọ (igodo, uru) dabara nke ọma. Omume a yiri onye ọrụ and.

Ngosipụta eserese nke mgbaba ozi:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

Atụmatụ:

  • mgbanwe mgbanwe
  • n'elu mgbako ọzọ. Niile (isi, uru) ụzọ abụọ nke àgwà headers a ga-ahazirịrị site na aha igodo tupu ịgbakọ ụkpụrụ ntụgharị ozi. Dị nwayọọ karịa ụdị mgbanwe ndị ọzọ.

Na-agbanwe agbanwe-Hashing Exchange

Onye mgbanwe a bụ ngwa mgbakwunye и emebeghi ya в RabbitMQ.

Consistent-hashing exchange (mgbanwe na hashing na-agbanwe agbanwe) - ejiri ya mgbe enwere ọtụtụ ahịrị ndị nwere ike ịnweta ozi, yana mgbe ịchọrọ ịhazigharị ibu dị n'etiti ha. Njikọ nke ozi na kwụ n'ahịrị na-apụta site na ịdị arọ (uru eriri ọnọdụ si 0 - n).

Ihe nha nha nke kwụ n'ahịrị - na-egosi na kwụ n'ahịrị ọ bụla ga-enweta ihe dị ka otu ego ozi (a ga-etinye ozi ọ bụla n'otu kwụ n'ahịrị). Enweghị nkwa zuru oke maka nkesa ozi otu.

Ngosipụta eserese nke mgbaba ozi:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

Hash gbakọọ dabere na igodo ụzọ ma ọ bụ ihe onwunwe headers ozi. Ọ bụrụ na ozi niile ebipụtara nwere igodo ụzọ ụzọ dị iche ma ọ bụ headers, mgbe ahụ nkesa ga-eme site na ibu. Ma ọ bụghị ya, a ga-eji igodo ụzọ ụzọ ma ọ bụ headers.

Kwesịrị inye aka mgbe ntinye aka nke ndị ahịa kwesịrị itolite elu karịa ngwọta nke nwere ọtụtụ ndị na-azụ ahịa na-eji otu kwụ n'ahịrị.

Na-ejikọta ndị mgbanwe (E2E)

Enwere ike ijikọ omume nke ndị mgbanwe niile site na iji nkwukọrịta Exchange-na-Exchange (ịkọkọta ndị mgbanwe adịghị etinye na nkọwapụta AMQP. Nke a bụ ndọtị nke protocol si n'akụkụ RabbitMQ).

Ngosipụta eserese nke mgbaba ozi:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

Na efu nke E2E anyị nwere ike ịchọta nhazi nhazi nke ọma iji zute ma ugbu a ma na-eto eto chọrọ.

Mepụta mgbanwe

Ịmepụta ihe mgbanwe na-eme site na iji synchronous RPC arịrịọ maka ihe nkesa. A na-eme arịrịọ ahụ site na iji usoro Exchange.Declarea na-akpọ ya na paramita:

  • aha mgbanwe
  • ụdị mgbanwe
  • paramita ndị ọzọ

Ihe atụ okike exchange site n'enyemaka RabbitMQ.Onye ahịa:

//...
channel.ExchangeDeclare(
    exchange: "my_exchange",
    type: "direct",
    durable: "false",
    autoDelete: "false",
    arguments: null
);
//...

  • exchange - aha onye mgbanwe anyị chọrọ ịmepụta. Aha ahụ ga-abụrịrị ihe pụrụ iche
  • type - ụdị mgbanwe
  • durable - ọ bụrụ na arụnyere truemgbe ahụ exchange ga-adịgide adịgide. A ga-echekwa ya na diski ma nwee ike ịlanarị ihe nkesa / onye na-ere ahịa malitegharịa. Ọ bụrụ na uru falsemgbe ahụ exchange bụ nwa oge, a ga-ehichapụkwa mgbe arụgharịrị ihe nkesa / onye na-ere ahịa
  • autoDelete - akpaka mwepụ. Exchange a ga-ehichapụ mgbe ehichapụrụ ahịrị niile metụtara ya
  • arguments - nhọrọ arụmụka. Ọtụtụ mgbe, ha na-akọwapụta site na arụmụka alternative exchange (ọzọ mgbanwe). Ọ bụrụ na ozi enweghị ike ịga n'okporo ụzọ mbụ ahụ, enwere ike iziga ya na onye mgbanwe ọzọ ka ebuga ya n'ụzọ dị iche.

RabbitMQ. Nkebi 2. Nghọta mgbanwe

Ọ bụrụ na e kere eke exchange ikekwe, mgbe ahụ, ihe nkesa ga-eziga onye ahịa a synchronous RPC azịza Exchange.DeclareOk. Ọ bụrụ na e kere eke agaghị ekwe omume (a jụrụ arịrịọ Exchange.Declare), mgbe ahụ ọwa ga-emechi ihe nkesa na-eji iwu asynchronous Channel.Close na onye ahịa ga-enweta mwepu OperationInterruptedException, nke ga-enwe koodu njehie na nkọwa ya.

A ghaghị ịmepụta onye mgbanwe tupu ikesa ozi. Ọ bụrụ na ị na-ebipụta ozi na ụfọdụ ndị na-enweghị mgbanwe mgbanwe - RabbitMQ ga-eji nwayọọ wepụ ya.

Ịmepụta mgbanwe site na GUI

Gaa na ngalaba nchịkwa RabbitMQ n'okpuru onye ọrụ guest (aha njirimara: guest na paswọọdụ: guest). Biko mara na onye ọrụ guest nwere ike jikọọ naanị site na localhost. Ugbu a, ka anyị gaa na taabụ Exchanges wee pịa Add a new exchange. Dejupụta akụrụngwa:

RabbitMQ. Nkebi 2. Nghọta mgbanwe

A kọwawo ọtụtụ n'ime ihe ndị ahụ n'elu. N'ebe a, anyị mara na ọ bụrụ na anyị setịpụrụ Internal, mgbe ahụ enwere ike iji mgbanwe naanị maka ya E2E. Producer agaghị enwe ike izipu ozi na mgbanwe dị otú ahụ.

nkwubi

Mgbe ị na-emepụta usoro, ọ dị mma ịkọwa topology uzo uzo iji eserese. Ma tupu ịmalite ịmepụta eserese, ọ bara uru ịkọwapụta ụzọ ndị nwere nnukwu okporo ụzọ, n'ihi na ha bụ ndị na-achọ elu throughput (arụmọrụ). Na-esote, ị nwere ike ịhazi okporo ụzọ. Naanị mgbe ahụ malite iwu ụlọ.

Ọ bụrụ na eserese a rụrụ e nwere set ngwucha igodo ụzọ, mgbe ahụ ọ bara uru ile anya n'ebe ọtụtụ fanout exchange, nke bụ 1:1 metụtara igodo ụzọ . Anyị na-echeta nke ahụ fanout exchange kacha ngwa ngwa.

Ọ bụrụ na ọnụ ọgụgụ nke ụzọ na-eche na enweghi ngwụcha, mgbe ahụ, ị ​​kwesịrị ịṅa ntị topic exchange ma ọ bụ, ọ bụrụ na template adịghị mkpa, ị nwere ike họrọ direct exchnge, n'ihi na ọ na-agba ọsọ topic exchange.

Ngwakọta dị iche iche exchange kwesịrị inyere gị aka ịchọta nke ziri ezi nhazi nhazi, nke na-ezute ma ugbu a ma na-eto eto chọrọ usoro.

Ọnụ ọgụgụ nke exchange na kwụ n'ahịrị kwesịrị ịdị ntakịrị ma e jiri ya tụnyere ọnụ ọgụgụ nke ụzọ.

N'isiokwu na-esonụ, anyị ga-amalite ịghọta Queues na Bindings n'ụzọ zuru ezu karị.

zoro

isi: www.habr.com

Tinye a comment