RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Exchange - mea hoʻololi a i ʻole wahi hoʻololi. Hoʻouna ʻia nā leka iā ia. Exchange hoʻolaha i ka leka i hoʻokahi a ʻoi aku paha nā pila. He alai i nā memo i kahi pila ma muli o nā pilina i hana ʻia (bindings) ma waena ona a me ka laina.

Exchange aole Kaʻina hana Erlang. No nā kumu scalability exchange - he laina kēia (loulou i kahi module me ke code kahi e waiho ai ka loiloi ala) i loko o ka waihona i kūkulu ʻia. mnesia. ʻO 1 tausani mea hoʻololi e hoʻopau wale i ka 1MB o ka hoʻomanaʻo.

Ka papa o nā mea

  • RabbitMQ. Mahele 1. Hoolauna. ʻO Erlang, AMQP a me RPC
  • RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi
  • RabbitMQ. Māhele 3. Ka Hoʻomaopopo ʻana i nā Līlani a me nā Paʻa
  • RabbitMQ. Mahele 4. Ka hoʻomaopopo ʻana i ke ʻano o nā memo a me nā kiʻi
  • RabbitMQ. Mahele 5: Hoʻopuka ʻana i nā leka a me nā hana hoʻohana
  • RabbitMQ. Mahele 6. Nānā i nā modules Federation a me Shovel
  • RabbitMQ. Mahele 7. Nā kikoʻī e pili ana i ka pilina a me Chanel
  • RabbitMQ. Mahele 8. RabbitMQ ma .NET
  • RabbitMQ. Mahele 9. Nānā

Hoʻololi pololei

Direct exchange - hoʻohana ʻia inā pono hāʻawi i ka leka i nā pila kikoʻī. Hoʻopukaʻia ka leka i ka mea hoʻololi me kahi kiko'ī kī ala ala a komo i loko o nā queues a pau i pili i kēia mea hoʻololi me ke kī ala ala like. ʻO ke kī ala ala he kaula. Loaʻa ka hoʻohālikelike me ka hoʻohana ʻana ke nānā ʻana i nā kaula no ke kūlike.

Hōʻike kiʻi o ke kahe memo:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

В rabbitmq aia kahi manaʻo mea hoʻololi paʻamau. ʻO ia direct exchange ʻaʻohe inoa. Inā hoʻohana ʻia ka mea hoʻololi paʻamau, e hoʻouna ʻia ka leka i kahi pila me ka inoa like kī hoʻokele memo.

Kūkākūkā kumuhana

Topic exchange – like direct exchange hiki i ke ala ala koho ma ka hoohalike ana i ke ki ala ala. Akā, i kēia hihia, hāʻawi ʻia ke kī e like me ka la'ana. I ka hana ʻana i kahi template, e hoʻohana 0 a i ʻole nā ​​huaʻōlelo hou aku (nā leka AZ и az a me nā helu 0-9), hoʻokaʻawale ʻia e kahi kiko, a me nā hōʻailona * и #.

  • * - hiki ke pani pololei 1 ka hua'ōlelo
  • # - hiki ke pani ʻia e 0 a i ʻole nā ​​huaʻōlelo hou aku

Hōʻike kiʻi o ke kahe memo:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Mai ka mana RabbitMQ 2.4.0 algorithm routing no topic exchange hoomaka e hana a hiki i 145 manawa wikiwiki. Ua hoʻokō lākou i kēia ma ka hoʻokomo ʻana i kahi ala ho'āʻo hoʻokō, e pili ana i ka hōʻike ʻana i nā hiʻohiʻona ma ke ʻano he kumu lāʻau. No ka laʻana nā templates a.b.c, a.*.b.c, a.#.c и b.b.c e hōʻike ʻia e ke ʻano penei:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Hoʻomaka ka ʻimi ʻana i ka hoʻohālikelike ʻana i ke kumu mai ke kumu a hele mai luna a lalo.

Nā Mea Hana:

  • hiki ke lilo ka hoʻohana ʻana i kēia mea hoʻololi he koho maikaʻi no ka hoʻomohala ʻana o ka noi e hiki mai ana, no ka mea Hiki ke hoʻopilikino ʻia nā templates i paʻi ʻia ka memo ma ke ʻano like direct exchange ai ole ia, fanout exchange
  • nā laʻana e hoʻohana * ʻoi aku ka wikiwikima mua o nā mamana e hoʻohana nei #.
  • topic exchange lohi direct exchange

Hoʻololi Fanout

Fanout exchange - hāʻawi ʻia nā memo a pau i nā pila a pau ʻoiai inā ua kuhikuhi ʻia kahi kī ala ala i ka memo.

Nā Mea Hana:

  • RabbitMQ ʻAʻole hana me nā kī ala ala a me nā mamana he hopena maikaʻi ia i ka huahana. ʻO kēia ka wikiwiki loa exchange;
  • pono e hiki i nā mea kūʻai aku ke hana i nā memo a pau;

Hōʻike kiʻi o ke kahe memo:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Hoʻololi poʻomanaʻo

Headers exchange - alai i nā memo i nā pila pili e pili ana i ka hoʻohālikelike ʻana o (ki, waiwai) mau hui waiwai headers nā hoʻopaʻa ʻana a me nā waiwai memo like. headers he Dictionary<ключ, значение>.

Inā ʻoe e hoʻohui i kahi kī kūikawā i ka puke wehewehe x-match me ke ano any, a laila e hoʻolele ʻia ka memo inā loaʻa kahi pāʻani hapa o nā pālua (ki, waiwai). Ua like kēia ʻano me ka mea hoʻohana or.

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

Ki paʻamau x-match aia ka waiwai all. ʻO ia ke ʻano o ka hoʻouna ʻia ʻana o ka leka inā pili pono nā pālua (ki, waiwai). Ua like kēia ʻano me ka mea hoʻohana and.

Hōʻike kiʻi o ke kahe memo:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Nā Mea Hana:

  • hoʻololi hou aku
  • hoʻonui helu helu. ʻO nā hui āpau (kī, waiwai) o kahi ʻano headers Pono e hoʻokaʻawale ʻia e ka inoa kī ma mua o ka helu ʻana i nā waiwai hoʻokele memo. ʻOi aku ka mālie ma mua o nā ʻano hoʻololi ʻē aʻe.

Kūʻai Kūlike-Hashing

ʻO kēia mea hoʻololi kiki и ʻaʻole i kūkulu ʻia i loko в RabbitMQ.

Consistent-hashing exchange (hoʻololi me ka hashing maʻamau) - hoʻohana ʻia inā nui nā queues i hiki ke loaʻa i kahi leka, a inā pono ʻoe e kaulike i ka ukana ma waena o lākou. Hoʻopili ʻia ka pilina o kahi memo me ka queue ma ke kaupaona ʻana (ka waiwai string conditional mai 0 - n).

Kaumaha like o nā pila - hōʻike e loaʻa i kēlā me kēia pila like like ka nui nā memo (e waiho ʻia kēlā me kēia memo i hoʻokahi laina). ʻAʻohe hōʻoia piha o ka hāʻawi like ʻana o nā memo.

Hōʻike kiʻi o ke kahe memo:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Hash helu ʻia ma muli o ke kī ala ala a waiwai paha headers nā memo. Inā loaʻa i nā memo i paʻi ʻia nā kī ala ʻokoʻa a i ʻole headers, a laila e hana ʻia ka puʻunaue ma ke kaupaona. A i ʻole, e hoʻohana ʻia ke kī ala ala a i ʻole headers.

Pono e kōkua i ka wā e pono ai ka ulu ʻana o nā mea kūʻai aku ma mua o kahi hopena me nā mea kūʻai he nui e hoʻohana ana i kahi laina hoʻokahi.

Hoʻohui i nā mea hoʻololi (E2E)

Hiki ke hoʻohui ʻia ke ʻano o nā mea hoʻololi a pau me ka hoʻohana ʻana i ke kamaʻilio Hoʻololi-i-Hoʻololi (ʻAʻole i hoʻokomo ʻia ka hoʻohui ʻana i nā mea hoʻololi i ka kikoʻī AMQP. He hoʻonui kēia o ka protocol mai ka ʻaoʻao RabbitMQ).

Hōʻike kiʻi o ke kahe memo:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Ma ka lilo o E2E hiki iā mākou ke ʻike i ka hoʻonohonoho scalable kūpono e hoʻokō i nā koi o kēia manawa a me ka ulu ʻana.

Hana i ka hoʻololi

Hoʻokumu ʻia kahi mea hoʻololi me ka synchronous RPC noi i ke kikowaena. Hana ʻia ka noi me ka hoʻohana ʻana i ke ʻano Exchange.Declarekāhea ʻia me nā ʻāpana:

  • inoa mea hoʻololi
  • ʻano hoʻololi
  • nā palena ʻē aʻe

Laʻana hana exchange me ke kōkua RabbitMQ.Client:

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

  • exchange - ka inoa o ka mea hoʻololi a mākou e makemake ai e hana. Pono ka inoa
  • type — ʻano mea hoʻololi
  • durable - inā hoʻokomo ʻia truealaila exchange e mau loa. E mālama ʻia ia ma ka disk a hiki ke ola i ka hoʻomaka hou ʻana o ka server/broker. Ina ka waiwai falsealaila exchange no ka manawa pōkole a e holoi ʻia i ka wā e hoʻomaka hou ai ke kikowaena / broker
  • autoDelete - wehe 'akomi. Exchange e holoi ʻia ke holoi ʻia nā pila a pau e pili ana me ia
  • arguments - nā hoʻopaʻapaʻa koho. ʻO ka pinepine, hōʻike lākou ma o nā hoʻopaʻapaʻa alternative exchange (mea hoʻololi ʻokoʻa). Inā ʻaʻole hiki ke hele i kahi memo ma ke ala kumu, hiki ke hoʻouna ʻia i kahi mea hoʻololi ʻē aʻe e holo ai ma ke ala ʻokoʻa.

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

Inā hana ʻia exchange hiki paha, a laila e hoʻouna ke kikowaena i ka mea kūʻai aku i kahi synchronous RPC pane Exchange.DeclareOk. Inā hana ʻia hikiʻole (Ua hōʻole ʻia ke noi Exchange.Declare) alaila e pani ka auwai server me ka hoʻohana ʻana i kahi kauoha asynchronous Channel.Close a e loaʻa i ka mea kūʻai aku kahi ʻokoʻa OperationInterruptedException, aia i loko o ka helu kuhi hewa a me kāna wehewehe.

Pono e hana ʻia kahi mea hoʻololi ma mua o ka hoʻouna ʻana i nā memo. Inā hoʻopuka ʻoe i kahi leka i kekahi mea hoʻololi ʻole - RabbitMQ e wehe malie.

Ke hana ʻana i ka Exchange ma o GUI

E hele i ka panel admin RabbitMQ ma lalo o ka mea hoʻohana guest (inoa hoʻohana: guest a me ka ʻōlelo huna: guest). E ʻoluʻolu e hoʻomaopopo i ka mea hoʻohana guest hiki ke hoʻopili wale mai localhost. I kēia manawa e hele kāua i ka pā Exchanges a kaomi ma luna Add a new exchange. E hoʻopiha i nā waiwai:

RabbitMQ. Mahele 2. Ka Hoomaopopo ana i na Kuikahi

ʻO ka hapa nui o nā waiwai i wehewehe ʻia ma luna. Maanei mākou e hoʻomaopopo ai inā mākou e hoʻonoho Internal, a laila hiki ke hoʻohana wale ʻia ka hoʻololi no E2E. Producer ʻaʻole hiki iā ia ke hoʻouna i nā leka i kēlā hoʻololi.

hopena

I ka hoʻomohala ʻana i kahi ʻōnaehana, hiki ke wehewehe i ka topology hoʻokele ʻana me ka hoʻohana ʻana i ka pakuhi. Akā, ma mua o kou hoʻomaka ʻana e kūkulu i kahi pakuhi, pono e hōʻike i nā ala me nā kaʻa kiʻekiʻe, no ka mea na lakou e koi ʻoi aku ka nui o ka hana (hana). A laila, hiki iā ʻoe ke hoʻokaʻawale i ke kaʻa. A laila hoʻomaka e kūkulu.

Inā ma ka pakuhi i kūkulu ʻia aia kau palena nā kī alahele, a laila pono ke nānā aku i kekahi fanout exchange, ʻo ia ka 1: 1 pili i ke kī alahele. Hoʻomanaʻo mākou i kēlā fanout exchange ka wikiwiki loa.

Inā ka helu o nā ala hele i ka palena ʻole, a laila pono ʻoe e hoʻolohe topic exchange a i ʻole, inā ʻaʻole pono ka laʻana, hiki iā ʻoe ke koho direct exchnge, no ka mea ʻoi aku kona wikiwiki topic exchange.

ʻO nā hui like ʻole exchange e kōkua iā ʻoe e ʻimi i ka mea kūpono scalable hoʻonohonoho, i kūpono i nā koi ʻōnaehana o kēia manawa a me ka ulu ʻana.

Ka helu o exchange a e liʻiliʻi nā laina laina e hoʻohālikelike ʻia me ka helu o nā ala.

Ma ka ʻatikala aʻe e hoʻomaka mākou e hoʻomaopopo i nā Queues and Bindings i nā kikoʻī hou aku.

kūmole

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka