{"id":69621,"date":"2020-02-21T02:56:53","date_gmt":"2020-02-20T23:56:53","guid":{"rendered":"https:\/\/prohoster.info\/blog\/rabbitmq-chast-2-razbiraemsya-s-exchanges"},"modified":"2020-03-03T16:14:48","modified_gmt":"2020-03-03T13:14:48","slug":"rabbitmq-chast-2-razbiraemsya-s-exchanges","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges","title":{"rendered":"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><code>Exchange<\/code> \u2014 v\u00e1lt\u00f3 vagy v\u00e1lt\u00f3hely. Ide \u00e9rkeznek az \u00fczenetek. <code>Exchange<\/code> <strong>elosztja az \u00fczenetet<\/strong> egy vagy t\u00f6bb sorba. Az <strong>ir\u00e1ny\u00edtja az \u00fczeneteket a sorba<\/strong> a l\u00e9trehozott kapcsolatok (<code>k\u00f6t\u00e9sek<\/code>) a k\u00f6z\u00f6tt\u00fck \u00e9s a sor k\u00f6z\u00f6tt. <\/p>\n<p><\/p>\n<p><code>Exchange<\/code> nem <noindex><a rel=\"nofollow\" href=\"http:\/\/erlang.org\/doc\/reference_manual\/processes.html\">Erlang-folyamat<\/a><\/noindex>. Sk\u00e1l\u00e1zhat\u00f3s\u00e1gi szempontokb\u00f3l <code>exchange<\/code> \u2014 ez egy sor (hivatkoz\u00e1s a k\u00f3dmodulra, ahol a routing logika tal\u00e1lhat\u00f3) az be\u00e9p\u00edtett adatb\u00e1zisban <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Mnesia\">mnesia<\/a><\/noindex>. 1000 v\u00e1lt\u00f3 mind\u00f6ssze 1 MB mem\u00f3ri\u00e1t fog fogyasztani. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"oglavlenie\">Tartalomjegyz\u00e9k<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/488654\/\">RabbitMQ. 1. r\u00e9sz. Bevezet\u00e9s. Erlang, AMQP \u00e9s RPC<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/489086\/\">RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se<\/a><\/noindex><\/li>\n<li>RabbitMQ. 3. r\u00e9sz. Queues \u00e9s Bindings meg\u00e9rt\u00e9se<\/li>\n<li>RabbitMQ. 4. r\u00e9sz. N\u00e9zz\u00fck meg, hogy mik azok az \u00fczenetek \u00e9s keretek<\/li>\n<li>RabbitMQ. 5. r\u00e9sz. Az \u00fczenetek k\u00f6zz\u00e9t\u00e9teli \u00e9s fogyaszt\u00e1si teljes\u00edtm\u00e9nye<\/li>\n<li>RabbitMQ. 6. r\u00e9sz. A Federation \u00e9s Shovel modulok \u00e1ttekint\u00e9se<\/li>\n<li>RabbitMQ. 7. r\u00e9sz. R\u00e9szletesen a Kapcsolatr\u00f3l \u00e9s csatorn\u00e1r\u00f3l<\/li>\n<li>RabbitMQ. 8. r\u00e9sz. RabbitMQ .NET k\u00f6rnyezetben<\/li>\n<li>RabbitMQ. 9. r\u00e9sz. Monitoring<\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"direct-exchange\"><em>Direct Exchange<\/em><\/h4>\n<p><\/p>\n<p><code>Direct exchange<\/code> \u2014 akkor haszn\u00e1latos, amikor <strong>\u00fczenetet kell eljuttatni bizonyos sorokhoz<\/strong>. Az \u00fczenet egy adott <strong>routing kulccsal<\/strong> ker\u00fcl k\u00f6zz\u00e9t\u00e9telre a v\u00e1lt\u00f3n, \u00e9s el\u00e9rkezik minden olyan sorhoz, amely ehhez a v\u00e1lt\u00f3hoz hasonl\u00f3 routing kulccsal kapcsol\u00f3dik. <strong>A routing kulcs egy sor<\/strong>. Az egyez\u0151s\u00e9g keres\u00e9se a <strong>sorok egyez\u0151s\u00e9g\u00e9nek ellen\u0151rz\u00e9s\u00e9vel t\u00f6rt\u00e9nik<\/strong>.<\/p>\n<p><\/p>\n<p>A \u00fczenetfolyam grafikus megjelen\u00edt\u00e9se:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/8ce3ab37542f2a7f8e7ac02a737c5f88.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A <code>rabbitmq<\/code> l\u00e9tezik fogalom <strong>alap\u00e9rtelmezett v\u00e1lt\u00f3<\/strong>. Ez egy <code>direct exchange<\/code> n\u00e9v n\u00e9lk\u00fcl. Amikor az alap\u00e9rtelmezett v\u00e1lt\u00f3t alkalmazz\u00e1k, az \u00fczenet azonos\u00edt\u00f3 n\u00e9ven fog ker\u00fclni a sorba, amely megegyezik <strong>az \u00fczenet routing kulcs\u00e1val<\/strong>. <\/p>\n<p><\/p>\n<h4 id=\"topic-exchange\"><em>Topic Exchange<\/em><\/h4>\n<p><\/p>\n<p><code>Topic exchange<\/code> \u2013 hasonl\u00f3an <code>direct exchange<\/code> lehet\u0151v\u00e9 teszi a szelekt\u00edv rut\u00e1l\u00e1st a routing kulcs \u00f6sszehasonl\u00edt\u00e1s\u00e1val. De ebben az esetben a kulcs egy <strong>sablon alapj\u00e1n van megadva<\/strong>. A sablon l\u00e9trehoz\u00e1sakor <code>0<\/code> vagy t\u00f6bb sz\u00f3t (bet\u0171k <code>AZ<\/code> \u00e9s <code>az<\/code> \u00e9s sz\u00e1mok <code>0-9<\/code>), amelyeket pont v\u00e1laszt el, valamint karakterek <code>*<\/code> \u00e9s <code>#<\/code>. <\/p>\n<p><\/p>\n<ul>\n<li><code>*<\/code> \u2014 pontosan <code>1<\/code> a \"replica\" sz\u00f3t (p\u00e9ld\u00e1ul az snd_ctl_add_slave() f\u00fcggv\u00e9ny helyett az snd_ctl_add_replica() lett haszn\u00e1lva), ami <\/li>\n<li><code>#<\/code> \u2014 helyettes\u00edthet\u0151 <code>0<\/code> vagy t\u00f6bb sz\u00f3t <\/li>\n<\/ul>\n<p><\/p>\n<p>A \u00fczenetfolyam grafikus megjelen\u00edt\u00e9se:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/a0ce48b291a3003eabbe61b3dfa5a4e1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A verzi\u00f3t\u00f3l <code>RabbitMQ 2.4.0<\/code> routing algoritmus a <code>topic exchange<\/code> kor\u00e1bban legal\u00e1bb amit <code>145<\/code> sokkal gyorsabban. Ezt a megk\u00f6zel\u00edt\u00e9s bevezet\u00e9s\u00e9vel \u00e9rt\u00e9k el, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/blog\/2011\/03\/28\/very-fast-and-scalable-topic-routing-part-2\/\">trie implementation<\/a><\/noindex>, amely a sablonokat fa strukt\u00far\u00e1ban k\u00e9pviseli. P\u00e9ld\u00e1ul a sablonok <code>a.b.c<\/code>, <code>a.*.b.c<\/code>, <code>a.#.c<\/code> \u00e9s <code>b.b.c<\/code> a k\u00f6vetkez\u0151 strukt\u00far\u00e1ban lesznek reprezent\u00e1lva:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/56ef5809fec9eb6c1b50a362b89dd05a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A sablonhoz val\u00f3 egyez\u0151s\u00e9get gy\u00f6k\u00e9rb\u0151l kezdve \u00e9s fentr\u0151l lefel\u00e9 haladva keresik.<\/p>\n<p><\/p>\n<p>Jellemz\u0151k:<\/p>\n<p><\/p>\n<ul>\n<li>a v\u00e1lt\u00f3 alkalmaz\u00e1sa j\u00f3 v\u00e1laszt\u00e1s lehet az esetlegesen j\u00f6v\u0151beli alkalmaz\u00e1sfejleszt\u00e9shez <strong>, mivel a sablonok mindig be\u00e1ll\u00edthat\u00f3k \u00fagy, hogy az \u00fczenetek k\u00f6zz\u00e9t\u00e9tele hasonl\u00f3an t\u00f6rt\u00e9njen<\/strong>fanout exchange <code>direct exchange<\/code> vagy <code>sablonok, amelyek haszn\u00e1latban vannak<\/code><\/li>\n<li>, mint a sablonok, amelyek haszn\u00e1latban vannak <code>*<\/code> <strong>: a l\u00e9p\u00e9sek sorrendje a k\u00f6vetkez\u0151:<\/strong>Fanout Exchange <code>#<\/code>. <\/li>\n<li><code>topic exchange<\/code> lassabban <code>direct exchange<\/code><\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"fanout-exchange\"><em>Fanout exchange<\/em><\/h4>\n<p><\/p>\n<p><code>minden \u00fczenetet minden sorhoz eljuttat<\/code> \u2013 <strong>m\u00e9g akkor is, ha az \u00fczenethez routing kulcsot rendelnek.<\/strong> nem m\u0171k\u00f6dik routing kulcsokkal \u00e9s sablonokkal<\/p>\n<p><\/p>\n<p>Jellemz\u0151k:<\/p>\n<p><\/p>\n<ul>\n<li><code>RabbitMQ<\/code> <strong>ami kedvez\u0151en hat a teljes\u00edtm\u00e9nyre. Ez a leggyorsabb<\/strong> ami pozit\u00edvan hat a teljes\u00edtm\u00e9nyre. Ez a leggyorsabb <code>exchange<\/code>;<\/li>\n<li>Minden felhaszn\u00e1l\u00f3nak k\u00e9pesnek kell lennie minden \u00fczenetet feldolgozni;<\/li>\n<\/ul>\n<p><\/p>\n<p>A \u00fczenetfolyam grafikus megjelen\u00edt\u00e9se:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/575d86093f151016aef8058fc7d92907.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h4 id=\"headers-exchange\"><em>Fejl\u00e9cek cser\u00e9je<\/em><\/h4>\n<p><\/p>\n<p><code>Fejl\u00e9cek cser\u00e9je<\/code> \u2014 \u00fczeneteket ir\u00e1ny\u00edt a kapcsolt sorokhoz a kulcs-\u00e9rt\u00e9k p\u00e1r (property) \u00f6sszehasonl\u00edt\u00e1s\u00e1nak alapj\u00e1n <code>fejl\u00e9cek<\/code> k\u00f6t\u00e9sek \u00e9s az \u00fczenet hasonl\u00f3 property-j\u00e9hez. <code>fejl\u00e9cek<\/code> jelent\u00e9se <code>Dictionary&lt;kulcs, \u00e9rt\u00e9k&gt;<\/code>. <\/p>\n<p><\/p>\n<p>Ha a sz\u00f3t\u00e1rhoz egy speci\u00e1lis kulcsot adunk hozz\u00e1 <code>x-match<\/code> az \u00e9rt\u00e9kkel <code>b\u00e1rmely<\/code>, akkor az \u00fczenet r\u00e9szleges kulcs-\u00e9rt\u00e9k p\u00e1r egyez\u00e9s eset\u00e9n ker\u00fcl ir\u00e1ny\u00edt\u00e1sra. Ez a viselked\u00e9s hasonl\u00f3 az <code>vagy<\/code>. <\/p>\n<p><\/p>\n<pre><code class=\"cs\">var bindingArguments = new Dictinary();\nbindingArguments.add(\"x-match\", \"any\");<\/code><\/pre>\n<p><\/p>\n<p>Alap\u00e9rtelmez\u00e9s szerint a kulcs <code>x-match<\/code> tartalmazza az \u00e9rt\u00e9ket <code>mind<\/code>. Ez azt jelenti, hogy az \u00fczenet teljes kulcs-\u00e9rt\u00e9k p\u00e1r egyez\u00e9s eset\u00e9n ker\u00fcl ir\u00e1ny\u00edt\u00e1sra. Ez a viselked\u00e9s hasonl\u00f3 az <code>\u00e9s<\/code>.<\/p>\n<p><\/p>\n<p>A \u00fczenetfolyam grafikus megjelen\u00edt\u00e9se:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/e9a02a0df88cb2c0538b97cec9002bf4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jellemz\u0151k:<\/p>\n<p><\/p>\n<ul>\n<li>tov\u00e1bbi rugalmass\u00e1g<\/li>\n<li>tov\u00e1bbi sz\u00e1m\u00edt\u00e1si k\u00f6lts\u00e9gek. Az \u00f6sszes p\u00e1r (kulcs, \u00e9rt\u00e9k) attrib\u00fatumot <code>fejl\u00e9cek<\/code> kulcsm\u00e9gnevez\u00e9s szerint kell rendezni az \u00fczenetir\u00e1ny\u00edt\u00e1si \u00e9rt\u00e9kek sz\u00e1m\u00edt\u00e1sa el\u0151tt. <strong>Lassabb, mint m\u00e1s t\u00edpus\u00fa cser\u00e9k<\/strong>.<\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"consistent-hashing-exchange\"><em>Konzisztens hash-el\u00e9si csere<\/em><\/h4>\n<p><\/p>\n<p>Ez a csere <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\/rabbitmq-consistent-hash-exchange\">plugin<\/a><\/noindex> \u00e9s <strong>nem be\u00e9p\u00edtett<\/strong> be. <code>RabbitMQ<\/code>.<\/p>\n<p><\/p>\n<p><code>Konzisztens-hashel\u00e9si csere<\/code> (csere konzisztens hashel\u00e9ssel) \u2013 akkor haszn\u00e1latos, amikor t\u00f6bb sor van, amelyek potenci\u00e1lis \u00fczenetfogad\u00f3k, \u00e9s sz\u00fcks\u00e9ges az eloszt\u00e1s\u00fck egyens\u00faly\u00e1nak biztos\u00edt\u00e1sa. Az \u00fczenet kapcsolata a sorhoz s\u00faly alap\u00fa (kondicion\u00e1lis karakterl\u00e1nc \u00e9rt\u00e9k a <code>0 - n<\/code>). <\/p>\n<p><\/p>\n<p>Az egyen\u00e9rt\u00e9k\u0171 sorok s\u00falya azt jelzi, hogy minden sor k\u00f6r\u00fclbel\u00fcl azonos sz\u00e1m\u00fa <strong>\u00fczenetet fog kapni (minden egyes \u00fczenet csak egy sorba ker\u00fclhet).<\/strong> A teljes egyenletes eloszl\u00e1s garanci\u00e1ja nem l\u00e9tezik <strong>Hash<\/strong>. <\/p>\n<p><\/p>\n<p>A \u00fczenetfolyam grafikus megjelen\u00edt\u00e9se:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/dd22749cad463fe86619a98276554e10.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><code>sz\u00e1m\u00edt\u00e1sa a routing kulcs vagy az \u00fczenet property alapj\u00e1n t\u00f6rt\u00e9nik. Ha minden k\u00f6zz\u00e9tett \u00fczenet k\u00fcl\u00f6nb\u00f6z\u0151 routing kulccsal rendelkezett, vagy<\/code> , akkor az eloszl\u00e1s a s\u00faly alapj\u00e1n t\u00f6rt\u00e9nik. Ellenkez\u0151 esetben a routing kulcsot vagy <code>fejl\u00e9cek<\/code> Seg\u00edtenie kell, amikor a fogyaszt\u00f3 \u00e1tbocs\u00e1t\u00f3 k\u00e9pess\u00e9ge olyan n\u00f6veked\u00e9sre szorul, amely meghaladja a megold\u00e1st, ahol t\u00f6bb fogyaszt\u00f3 osztozik egy soron. <code>fejl\u00e9cek<\/code>Exchange-ek (E2E) kombin\u00e1l\u00e1sa <code>fejl\u00e9cek<\/code>.<\/p>\n<p><\/p>\n<p><strong>Minden exchange viselked\u00e9se kombin\u00e1lhat\u00f3 az<\/strong><\/p>\n<p><\/p>\n<h4 id=\"kombinirovanie-obmennikov-e2e\"><em>Exchange-to-Exchange<\/em><\/h4>\n<p><\/p>\n<p>(exchange-ek kombin\u00e1l\u00e1sa nem tartozik a specifik\u00e1ci\u00f3 <strong>. Ez a protokoll kiterjeszt\u00e9se<\/strong> A <code>AMQP<\/code>E2E <code>RabbitMQ<\/code>).<\/p>\n<p><\/p>\n<p>A \u00fczenetfolyam grafikus megjelen\u00edt\u00e9se:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/41ea01a0f43f2dd195fa4f34f7fc176c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>seg\u00edts\u00e9g\u00e9vel megtal\u00e1lhatjuk a megfelel\u0151 m\u00e9retezhet\u0151 konfigur\u00e1ci\u00f3t, amely megfelel a jelenlegi \u00e9s a n\u00f6vekv\u0151 ig\u00e9nyeknek. <code>E2E<\/code> seg\u00edts\u00e9g\u00e9vel megtal\u00e1lhatjuk a megfelel\u0151 m\u00e9retezhet\u0151 konfigur\u00e1ci\u00f3t, amely megfelel a jelenlegi \u00e9s a n\u00f6vekv\u0151 ig\u00e9nyeknek.<\/p>\n<p><\/p>\n<h4 id=\"sozdanie-exchange\"><em>Exchange l\u00e9trehoz\u00e1sa<\/em><\/h4>\n<p><\/p>\n<p>Az Exchange l\u00e9trehoz\u00e1sa szinkron m\u00f3dszerrel t\u00f6rt\u00e9nik <code>RPC<\/code> lek\u00e9r\u00e9ssel a szerverhez. A k\u00e9r\u00e9s a k\u00f6vetkez\u0151 met\u00f3dussal t\u00f6rt\u00e9nik: <code>Exchange.Declare<\/code>, az al\u00e1bbi param\u00e9terekkel:<\/p>\n<p><\/p>\n<ul>\n<li>az exchange neve<\/li>\n<li>exchange t\u00edpusa<\/li>\n<li>egy\u00e9b param\u00e9terek<\/li>\n<\/ul>\n<p><\/p>\n<p>L\u00e9trehoz\u00e1si p\u00e9lda <code>exchange<\/code> a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/dotnet.html\">RabbitMQ.Client<\/a><\/noindex>:<\/p>\n<p><\/p>\n<pre><code class=\"cs\">\/\/...\nchannel.ExchangeDeclare(\n    exchange: &quot;my_exchange&quot;,\n    type: &quot;direct&quot;,\n    durable: &quot;false&quot;,\n    autoDelete: &quot;false&quot;,\n    arguments: null\n);\n\/\/...<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><code>exchange<\/code> \u2014 az exchange neve, amit l\u00e9tre akarunk hozni. A n\u00e9vnek egyedinek kell lennie<\/li>\n<li><code>type<\/code> \u2014 az exchange t\u00edpusa<\/li>\n<li><code>durable<\/code> \u2014 ha be\u00e1ll\u00edtja, <code>igaz<\/code>, akkor <code>exchange<\/code> \u00e1lland\u00f3 lesz. A lemezre menthet\u0151 \u00e9s t\u00fal\u00e9lheti a szerver\/broker \u00fajraind\u00edt\u00e1s\u00e1t. Ha az \u00e9rt\u00e9k <code>hamis<\/code>, akkor <code>exchange<\/code> ideiglenes, akkor t\u00f6rl\u00e9sre ker\u00fcl, amikor a szerver\/broker \u00fajraindul<\/li>\n<li><code>autoDelete<\/code> \u2014 automatikus t\u00f6rl\u00e9s. <code>Exchange<\/code> t\u00f6r\u00f6lve lesz, amikor az \u00f6sszes hozz\u00e1 kapcsol\u00f3d\u00f3 sor t\u00f6rl\u00e9sre ker\u00fcl<\/li>\n<li><code>\u2014 v\u00e1laszthat\u00f3 argumentumok. R\u00e9szletesebben l\u00e1sd al\u00e1bb.<\/code> \u2014 opcion\u00e1lis argumentumok. Leggyakrabban az argumentumokon kereszt\u00fcl adjuk meg <code>alternat\u00edv exchange<\/code> (<strong>alternat\u00edv exchange<\/strong>). Ha az \u00fczenet nem tud \u00e1tjutni az eredeti \u00fatvonalon, akkor az alternat\u00edv exchange-be ir\u00e1ny\u00edthat\u00f3 m\u00e1sik \u00faton.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/6a352e92f94dadf58ba24de453806133.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L\u00e9trehoz\u00e1s eset\u00e9n <code>exchange<\/code> <strong>lehets\u00e9ges<\/strong>, a szerver szinkronikus <code>RPC<\/code> v\u00e1laszt fog k\u00fcldeni az \u00fcgyf\u00e9lnek <code>Exchange.DeclareOk<\/code>. Ha a l\u00e9trehoz\u00e1s <strong>lehetetlen<\/strong> (k\u00e9relmez\u00e9s sor\u00e1n hiba t\u00f6rt\u00e9nt <code>Exchange.Declare<\/code>), akkor <strong>a csatorna le fog z\u00e1rulni<\/strong> a szerver \u00e1ltal aszinkron parancs seg\u00edts\u00e9g\u00e9vel <code>Channel.Close parancs seg\u00edts\u00e9g\u00e9vel<\/code> \u00e9s az \u00fcgyf\u00e9l kiv\u00e9telt kap <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/releases\/rabbitmq-dotnet-client\/v3.6.10\/rabbitmq-dotnet-client-3.6.10-client-htmldoc\/html\/type-RabbitMQ.Client.Exceptions.OperationInterruptedException.html\">OperationInterruptedException<\/a><\/noindex>, amely tartalmazni fog egy hiba k\u00f3dot \u00e9s annak le\u00edr\u00e1s\u00e1t. <\/p>\n<p><\/p>\n<p>Az exchange-nek l\u00e9trej\u00f6nnie kell az \u00fczenetek publik\u00e1l\u00e1sa el\u0151tt. Ha \u00fczenetet publik\u00e1l egy nem l\u00e9tez\u0151 exchange-ben \u2014 <code>RabbitMQ<\/code> csendben t\u00f6r\u00f6lni fogja.<\/p>\n<p><\/p>\n<h4 id=\"sozdanie-exchange-cherez-graficheskiy-interfeys\"><em>Exchange l\u00e9trehoz\u00e1sa grafikus fel\u00fcleten<\/em><\/h4>\n<p><\/p>\n<p>Bel\u00e9p\u00fcnk az adminisztr\u00e1tori panelre <code>RabbitMQ<\/code> a felhaszn\u00e1l\u00f3val <code>guest<\/code> (felhaszn\u00e1l\u00f3n\u00e9v: <code>guest<\/code> \u00e9s jelsz\u00f3: <code>guest<\/code>). K\u00e9rj\u00fck, vegye figyelembe, hogy a felhaszn\u00e1l\u00f3 <code>guest<\/code> csak a helyi g\u00e9pr\u0151l csatlakozhat. Most t\u00e9rj\u00fcnk \u00e1t a <code>Cser\u00e9k<\/code> f\u00fclre \u00e9s kattintsunk a <code>\u00daj exchange hozz\u00e1ad\u00e1sa<\/code>. T\u00f6ltse ki a tulajdons\u00e1gokat:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. 2. r\u00e9sz. Az Exchanges r\u00e9szletez\u00e9se\" src=\"\/wp-content\/uploads\/2020\/02\/c4fd31b8cdb8182690ec8c01ccd2a460.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A legt\u00f6bb jellemz\u0151t fentebb le\u00edrtuk. Itt eml\u00edtj\u00fck meg, hogy ha be\u00e1ll\u00edtja, <code>Bels\u0151<\/code>, akkor az exchange csak <code>E2E<\/code>. <code>Producer<\/code> nem tud \u00fczeneteket k\u00fcldeni egy ilyen exchange-re.<\/p>\n<p><\/p>\n<h3 id=\"zaklyuchenie\">Z\u00e1r\u00e1s<\/h3>\n<p><\/p>\n<p>A rendszer fejleszt\u00e9se sor\u00e1n k\u00e9nyelmes a topol\u00f3gia le\u00edr\u00e1sa <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F\">ir\u00e1ny\u00edt\u00e1si<\/a><\/noindex> grafikon seg\u00edts\u00e9g\u00e9vel. De miel\u0151tt elkezden\u00e9 fel\u00e9p\u00edteni a grafikont, \u00e9rdemes kiemelni a nagy forgalm\u00fa \u00fatvonalakat, mivel ezek ig\u00e9nylik <strong>magasabb \u00e1tereszt\u0151 k\u00e9pess\u00e9get<\/strong> (teljes\u00edtm\u00e9ny). Ezut\u00e1n a forgalom oszt\u00e1lyozhat\u00f3. Majd el\u0151re lehet haladni az \u00e9p\u00edtkez\u00e9ssel.<\/p>\n<p><\/p>\n<p>Ha a fel\u00e9p\u00edtett grafikonban v\u00e9ges <strong>routing kulcsok sz\u00e1ma l\u00e9tezik, \u00e9rdemes t\u00f6bb<\/strong> , amelyek 1:1 ar\u00e1nyban kapcsol\u00f3dnak a routing kulcshoz. Ne feledj\u00fck, hogy <code>sablonok, amelyek haszn\u00e1latban vannak<\/code>a leggyorsabb. <code>sablonok, amelyek haszn\u00e1latban vannak<\/code> Ha az \u00fatvonalak sz\u00e1ma<\/p>\n<p><\/p>\n<p>a v\u00e9gtelenhez k\u00f6zel\u00edt, \u00e9rdemes figyelembe venni <strong>vagy, ha nem sz\u00fcks\u00e9ges a minta, akkor v\u00e1lassza a<\/strong>direct exchange <code>topic exchange<\/code> , mivel az gyorsabb <code>K\u00fcl\u00f6nb\u00f6z\u0151 kombin\u00e1ci\u00f3k<\/code>meg kell, hogy tal\u00e1lja a megfelel\u0151 <code>topic exchange<\/code>.<\/p>\n<p><\/p>\n<p>sk\u00e1l\u00e1zhat\u00f3 konfigur\u00e1ci\u00f3t <code>exchange<\/code> , amely megfelel a rendszert jelenleg \u00e9s a n\u00f6vekv\u0151 ig\u00e9nyeinek is. <strong>\u00e9s a sorok sz\u00e1ma minim\u00e1lis kell, hogy legyen az \u00fatvonalak sz\u00e1m\u00e1hoz k\u00e9pest.<\/strong>A k\u00f6vetkez\u0151 cikkben kezdj\u00fck el r\u00e9szletesebben meg\u00e9rteni a Queues-t \u00e9s Bindings-ot.<\/p>\n<p><\/p>\n<p>Mennyis\u00e9g <code>exchange<\/code> \u00e9s a soroknak minim\u00e1lisnak kell lenni\u00fck a sz\u00e1lak sz\u00e1m\u00e1hoz k\u00e9pest.<\/p>\n<p><\/p>\n<p>A k\u00f6vetkez\u0151 cikkben r\u00e9szletesebben megvizsg\u00e1ljuk a Queues \u00e9s Bindings fogalm\u00e1t.<\/p>\n<p><\/p>\n<h3 id=\"ssylki\">Hivatkoz\u00e1sok<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">A RabbitMQ projekt oldala<\/a><\/noindex><\/li>\n<\/ul>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/489086\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Exchange \u2014 \u043e\u0431\u043c\u0435\u043d\u043d\u0438\u043a \u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0430 \u043e\u0431\u043c\u0435\u043d\u0430. \u0412 \u043d\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. Exchange \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439. \u041e\u043d \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 (bindings) \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c \u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e. Exchange \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f Erlang-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c. \u0418\u0437 \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 exchange \u2014 \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430 (\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u0441 \u043a\u043e\u0434\u043e\u043c, \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u043b\u043e\u0433\u0438\u043a\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438) \u0432\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":69622,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-69621","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"Exchange \u2014 \u043e\u0431\u043c\u0435\u043d\u043d\u0438\u043a \u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0430 \u043e\u0431\u043c\u0435\u043d\u0430. \u0412 \u043d\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. Exchange \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47RabbitMQ. \u0427\u0430\u0441\u0442\u044c 2. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 Exchanges | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Exchange \u2014 \u043e\u0431\u043c\u0435\u043d\u043d\u0438\u043a \u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0430 \u043e\u0431\u043c\u0435\u043d\u0430. \u0412 \u043d\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. Exchange \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-20T23:56:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47RabbitMQ. 2. r\u00e9sz. Az Exchanges elemz\u00e9se | ProHoster","description":"Exchange \u2014 v\u00e1lt\u00f3 vagy cserepont. Ide \u00e9rkeznek az \u00fczenetek. Az Exchange az \u00fczenetet egy vagy t\u00f6bb sorba osztja.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47RabbitMQ. \u0427\u0430\u0441\u0442\u044c 2. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 Exchanges | ProHoster","og:description":"Exchange \u2014 \u043e\u0431\u043c\u0435\u043d\u043d\u0438\u043a \u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0430 \u043e\u0431\u043c\u0435\u043d\u0430. \u0412 \u043d\u0435\u0433\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. Exchange \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0435\u0439.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-20T23:56:53+00:00","article:modified_time":"2020-03-03T13:14:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"69621","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:31:26","updated":"2022-09-28 03:24:29","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/69621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=69621"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/69621\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/69622"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=69621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=69621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=69621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}