{"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\/sq\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges","title":{"rendered":"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><code>Exchange<\/code> \u2014 k\u00ebmbim ose pik\u00eb k\u00ebmbimi. N\u00eb t\u00eb d\u00ebrgohen mesazhe. <code>Exchange<\/code> <strong>distribuon mesazhin<\/strong> n\u00eb nj\u00eb ose disa radh\u00eb. Ai <strong>rutesh mesazhet n\u00eb radh\u00eb<\/strong> bazuar n\u00eb lidhjet e krijuara (<code>bindings<\/code>) nd\u00ebrmjet tij dhe radh\u00ebs. <\/p>\n<p><\/p>\n<p><code>Exchange<\/code> nuk \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"http:\/\/erlang.org\/doc\/reference_manual\/processes.html\">proces Erlang<\/a><\/noindex>. P\u00ebr arsye t\u00eb shkall\u00ebzueshm\u00ebris\u00eb <code>exchange<\/code> \u2014 kjo \u00ebsht\u00eb nj\u00eb varg (lidhen me modul me kodin ku ndodhet logjika e routing-ut) n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb integruar <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Mnesia\">mnesia<\/a><\/noindex>. 1 mij\u00eb k\u00ebmbimta do t\u00eb konsumojn\u00eb vet\u00ebm 1MB memorie. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"oglavlenie\">P\u00ebrmbajtja<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/488654\/\">RabbitMQ. Pjesa 1. Prezantimi. Erlang, AMQP dhe RPC<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/489086\/\">RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges<\/a><\/noindex><\/li>\n<li>RabbitMQ. Pjesa 3. Duke u marr\u00eb me Queues dhe Bindings<\/li>\n<li>RabbitMQ. Pjesa 4. Po shqyrtojm\u00eb \u00e7far\u00eb jan\u00eb mesazhet dhe kornizat<\/li>\n<li>RabbitMQ. Pjesa 5. Performanca e publikimit dhe konsumit t\u00eb mesazheve<\/li>\n<li>RabbitMQ. Pjesa 6. P\u00ebrmbledhje e modulit Federation dhe Shovel<\/li>\n<li>RabbitMQ. Pjesa 7. Detajet mbi Connection dhe Channel<\/li>\n<li>RabbitMQ. Pjesa 8. RabbitMQ n\u00eb .NET<\/li>\n<li>RabbitMQ. Pjesa 9. Monitorimi<\/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 p\u00ebrdoret kur \u00ebsht\u00eb e nevojshme <strong>t\u00eb d\u00ebrgohet nj\u00eb mesazh n\u00eb radh\u00eb t\u00eb caktuara<\/strong>. Mesazhi publikohet n\u00eb k\u00ebmbim me nj\u00eb <strong>\u00e7el\u00ebs routing<\/strong> dhe shkon n\u00eb t\u00eb gjitha radh\u00ebt q\u00eb lidhen me k\u00ebt\u00eb k\u00ebmbim me \u00e7el\u00ebsin e ngjash\u00ebm t\u00eb routing-ut. <strong>\u00c7el\u00ebsi i routing-ut \u00ebsht\u00eb nj\u00eb varg<\/strong>. K\u00ebrkimi i p\u00ebrputhshm\u00ebris\u00eb ndodh p\u00ebrmes <strong>kontrollit t\u00eb vargjeve p\u00ebr ekvivalent\u00ebsi<\/strong>.<\/p>\n<p><\/p>\n<p>Paraqitja grafike e fluxit t\u00eb mesazheve:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/8ce3ab37542f2a7f8e7ac02a737c5f88.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb <code>rabbitmq<\/code> ekziston nocioni <strong>k\u00ebmbimi n\u00eb parazgjedhje<\/strong>. Kjo \u00ebsht\u00eb <code>direct exchange<\/code> pa em\u00ebr. N\u00ebse p\u00ebrdoret k\u00ebmbimi n\u00eb parazgjedhje, at\u00ebher\u00eb mesazhi do t\u00eb miratohet n\u00eb radh\u00ebn me emrin e barabart\u00eb <strong>\u00e7el\u00ebsit t\u00eb routing-ut t\u00eb mesazhit<\/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 ngjash\u00ebm <code>direct exchange<\/code> ofron mund\u00ebsin\u00eb p\u00ebr t\u00eb realizuar rrug\u00ebzim selektiv duke krahasuar \u00e7el\u00ebsin e rrug\u00ebzimit. Por, n\u00eb k\u00ebt\u00eb rast, \u00e7el\u00ebsi \u00ebsht\u00eb caktuar <strong>sip\u00ebrfaqes<\/strong>. Kur krijohet nj\u00eb sip\u00ebrfaqe p\u00ebrdoren <code>0<\/code> ose m\u00eb shum\u00eb fjal\u00eb (shkronja <code>AZ<\/code> dhe <code>az<\/code> dhe numra <code>0-9<\/code>), t\u00eb ndara me pik\u00eb, si dhe simbole <code>*<\/code> dhe <code>#<\/code>. <\/p>\n<p><\/p>\n<ul>\n<li><code>*<\/code> \u2014 mund t\u00eb z\u00ebvend\u00ebsohet me sakt\u00ebsisht <code>1<\/code> fjal\u00eb <\/li>\n<li><code>#<\/code> \u2014 mund t\u00eb z\u00ebvend\u00ebsohet me <code>0<\/code> ose m\u00eb shum\u00eb fjal\u00eb <\/li>\n<\/ul>\n<p><\/p>\n<p>Paraqitja grafike e fluxit t\u00eb mesazheve:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/a0ce48b291a3003eabbe61b3dfa5a4e1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Duke filluar nga versioni <code>RabbitMQ 2.4.0<\/code> algoritmi i rrug\u00ebzimit p\u00ebr <code>nd\u00ebrrimin e temave<\/code> filloi t\u00eb funksionoj\u00eb deri <code>145<\/code> m\u00eb shpejt. E arrit\u00ebn k\u00ebt\u00eb duke implementuar qasjen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/blog\/2011\/03\/28\/very-fast-and-scalable-topic-routing-part-2\/\">implementimi trie<\/a><\/noindex>, i cili n\u00ebnkupton paraqitjen e sip\u00ebrfaqeve n\u00eb form\u00ebn e nj\u00eb strukture peme. P\u00ebr shembull, sip\u00ebrfaqet <code>a.b.c<\/code>, <code>a.*.b.c<\/code>, <code>a.#.c<\/code> dhe <code>b.b.c<\/code> do t\u00eb paraqiten me k\u00ebt\u00eb struktur\u00eb:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/56ef5809fec9eb6c1b50a362b89dd05a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebrkimi i p\u00ebrputhjes me sip\u00ebrfaqen kryhet duke filluar nga rrenja dhe duke ndjekur nga lart posht\u00eb.<\/p>\n<p><\/p>\n<p>Karakteristikat:<\/p>\n<p><\/p>\n<ul>\n<li>aplikimi i k\u00ebtij nd\u00ebrrimi mund t\u00eb b\u00ebhet <strong>zgjedhje e mir\u00eb p\u00ebr zhvillimin e mundsh\u00ebm t\u00eb ardhsh\u00ebm t\u00eb aplikacionit<\/strong>, pasi q\u00eb sip\u00ebrfaqet gjithmon\u00eb mund t\u00eb konfigurohen p\u00ebr t\u00eb publikuar mesazhe si\u00e7 jan\u00eb <code>direct exchange<\/code> ose <code>nd\u00ebrrimi fanout<\/code><\/li>\n<li>sip\u00ebrfaqet q\u00eb p\u00ebrdorin <code>*<\/code> <strong>shum\u00eb m\u00eb shpejt<\/strong>, sesa sip\u00ebrfaqet q\u00eb p\u00ebrdorin <code>#<\/code>. <\/li>\n<li><code>nd\u00ebrrimin e temave<\/code> m\u00eb ngadal\u00eb <code>direct exchange<\/code><\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"fanout-exchange\"><em>nd\u00ebrrimin Fanout<\/em><\/h4>\n<p><\/p>\n<p><code>nd\u00ebrrimi fanout<\/code> \u2013 <strong>t\u00eb gjitha mesazhet dor\u00ebzohen n\u00eb t\u00eb gjitha radh\u00ebt<\/strong> edhe n\u00ebse \u00e7el\u00ebsi i rrug\u00ebzimit \u00ebsht\u00eb caktuar n\u00eb mesazh.<\/p>\n<p><\/p>\n<p>Karakteristikat:<\/p>\n<p><\/p>\n<ul>\n<li><code>RabbitMQ<\/code> <strong>nuk i punon me \u00e7el\u00eb e rrug\u00ebs dhe modele<\/strong> \u00e7ka ndikon pozitivisht n\u00eb performanc\u00eb. Kjo \u00ebsht\u00eb m\u00eb e shpejta <code>exchange<\/code>;<\/li>\n<li>t\u00eb gjith\u00eb konsumator\u00ebt duhet t\u00eb ken\u00eb mund\u00ebsin\u00eb t\u00eb p\u00ebrpunojn\u00eb t\u00eb gjitha mesazhet;<\/li>\n<\/ul>\n<p><\/p>\n<p>Paraqitja grafike e fluxit t\u00eb mesazheve:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/575d86093f151016aef8058fc7d92907.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h4 id=\"headers-exchange\"><em>Headers Exchange<\/em><\/h4>\n<p><\/p>\n<p><code>Headers exchange<\/code> \u2014 drejton mesazhet n\u00eb radh\u00ebt e lidhura mbi baz\u00ebn e krahasimit t\u00eb \u00e7ift\u00ebve (\u00e7el\u00ebs, vler\u00eb) t\u00eb pron\u00ebs <code>headers<\/code> lidheve dhe pron\u00ebs s\u00eb ngjashme t\u00eb mesazhit. <code>headers<\/code> \u00ebsht\u00eb nj\u00eb <code>Dictionary<\/code>. <\/p>\n<p><\/p>\n<p>N\u00ebse nj\u00eb \u00e7el\u00ebs special do t\u00eb shtohej n\u00eb fjalor <code>x-match<\/code> me vler\u00eb <code>any<\/code>, at\u00ebher\u00eb mesazhi rrug\u00ebzohet n\u00eb rast t\u00eb p\u00ebrputhjes s\u00eb pjesshme t\u00eb \u00e7ift\u00ebve (\u00e7el\u00ebs, vler\u00eb). Ky sjellje \u00ebsht\u00eb e ngjashme me operatorin <code>or<\/code>. <\/p>\n<p><\/p>\n<pre><code class=\"cs\">var bindingArguments = new Dictinary&lt;String, Object&gt;();\nbindingArguments.add(&quot;x-match&quot;, &quot;any&quot;);<\/code><\/pre>\n<p><\/p>\n<p>N\u00eb m\u00ebnyr\u00eb\u9ed8\u8ba4 \u00e7el\u00ebsi <code>x-match<\/code> ka vler\u00ebn <code>all<\/code>. Kjo do t\u00eb thot\u00eb se mesazhi rrug\u00ebzohet n\u00eb rast t\u00eb p\u00ebrputhjes s\u00eb plot\u00eb t\u00eb \u00e7ift\u00ebve (\u00e7el\u00ebs, vler\u00eb). Ky sjellje \u00ebsht\u00eb e ngjashme me operatorin <code>and<\/code>.<\/p>\n<p><\/p>\n<p>Paraqitja grafike e fluxit t\u00eb mesazheve:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/e9a02a0df88cb2c0538b97cec9002bf4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Karakteristikat:<\/p>\n<p><\/p>\n<ul>\n<li>fleksibilitet shtes\u00eb<\/li>\n<li>shpenzime t\u00eb tjera p\u00ebr llogaritje. T\u00eb gjith\u00eb \u00e7ift\u00ebt (\u00e7el\u00ebs, vler\u00eb) t\u00eb atributit <code>headers<\/code> duhen radhitur sipas emrit t\u00eb \u00e7el\u00ebsit p\u00ebrpara llogaritjes s\u00eb vlerave t\u00eb rrug\u00ebzimit t\u00eb mesazhit. <strong>M\u00eb ngadal\u00eb se llojet e tjera t\u00eb exchange<\/strong>.<\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"consistent-hashing-exchange\"><em>Consistent-Hashing Exchange<\/em><\/h4>\n<p><\/p>\n<p>Ky exchange \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\/rabbitmq-consistent-hash-exchange\">plugin<\/a><\/noindex> dhe <strong>nuk \u00ebsht\u00eb i integruar<\/strong> n\u00eb <code>RabbitMQ<\/code>.<\/p>\n<p><\/p>\n<p><code>Consistent-hashing exchange<\/code> (exchange me miratimin e kodimit) \u2013 p\u00ebrdoret kur ka disa radh\u00eb q\u00eb jan\u00eb mund\u00ebsisht marr\u00ebs t\u00eb mesazhit, dhe kur duhet t\u00eb balancohet ngarkesa midis tyre. Lidhja e mesazhit me radh\u00ebn ndodh sipas pesh\u00ebs (nj\u00eb vler\u00eb stringu t\u00eb kusht\u00ebzuar nga <code>0 - n<\/code>). <\/p>\n<p><\/p>\n<p>Pesha ekuivalente e radh\u00ebve \u2013 tregon se n\u00eb \u00e7do radh\u00eb do t\u00eb vij\u00eb <strong>pran\u00eb nj\u00eb numri t\u00eb ngjash\u00ebm<\/strong> mesazhesh (secili mesazh do t\u00eb vendoset vet\u00ebm n\u00eb nj\u00eb radh\u00eb). <strong>Nuk ka garanci t\u00eb plot\u00eb p\u00ebr shp\u00ebrndarjen e barabart\u00eb t\u00eb mesazheve<\/strong>. <\/p>\n<p><\/p>\n<p>Paraqitja grafike e fluxit t\u00eb mesazheve:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/dd22749cad463fe86619a98276554e10.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><code>Hash<\/code> llogaritet n\u00eb baz\u00eb t\u00eb \u00e7el\u00ebsit t\u00eb routingut ose pron\u00ebs <code>headers<\/code> t\u00eb mesazhit. N\u00ebse t\u00eb gjitha mesazhet e publikuara kishin \u00e7el\u00ebsa routingu t\u00eb ndrysh\u00ebm apo <code>headers<\/code>, at\u00ebher\u00eb shp\u00ebrndarja do t\u00eb b\u00ebhet sipas pesh\u00ebs. Ndryshe do t\u00eb p\u00ebrdoret \u00e7el\u00ebsi i routingut ose <code>headers<\/code>.<\/p>\n<p><\/p>\n<p><strong>Duhet t\u00eb ndihmoj\u00eb kur kapaciteti i konsumatorit ka nevoj\u00eb p\u00ebr rritje m\u00eb t\u00eb lart\u00eb se zgjidhja me disa konsumator\u00eb q\u00eb p\u00ebrdorin nj\u00eb radh\u00eb.<\/strong><\/p>\n<p><\/p>\n<h4 id=\"kombinirovanie-obmennikov-e2e\"><em>Kombinimi i k\u00ebmbimeve (E2E)<\/em><\/h4>\n<p><\/p>\n<p>Sjellja e t\u00eb gjitha k\u00ebmbimeve mund t\u00eb kombinohet p\u00ebrmes lidhjes <strong>Exchange-to-Exchange<\/strong> (kombinimi i k\u00ebmbimeve nuk \u00ebsht\u00eb p\u00ebrfshir\u00eb n\u00eb specifikimin <code>AMQP<\/code>. Ky \u00ebsht\u00eb nj\u00eb zgjerim i protokollit nga ana <code>RabbitMQ<\/code>).<\/p>\n<p><\/p>\n<p>Paraqitja grafike e fluxit t\u00eb mesazheve:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/41ea01a0f43f2dd195fa4f34f7fc176c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Me an\u00eb t\u00eb <code>E2E<\/code> mund t\u00eb gjejm\u00eb konfigurimin e duhur dhe t\u00eb shkall\u00ebzuesh\u00ebm q\u00eb p\u00ebrmbush si k\u00ebrkesat aktuale ashtu edhe ato n\u00eb rritje.<\/p>\n<p><\/p>\n<h4 id=\"sozdanie-exchange\"><em>Krijimi i Exchange<\/em><\/h4>\n<p><\/p>\n<p>Krijimi i nj\u00eb nd\u00ebrrimi b\u00ebhet p\u00ebrmes nj\u00eb k\u00ebrkese sinkrone <code>RPC<\/code> n\u00eb server. K\u00ebrkesa realizohet p\u00ebrmes metod\u00ebs <code>Exchange.Declare<\/code>, e cila thirret me parametrat:<\/p>\n<p><\/p>\n<ul>\n<li>emri i nd\u00ebrrimit<\/li>\n<li>tipi i nd\u00ebrrimit<\/li>\n<li>parametra t\u00eb tjer\u00eb<\/li>\n<\/ul>\n<p><\/p>\n<p>Shembuj krijimi <code>exchange<\/code> me ndihm\u00ebn e <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 emri i nd\u00ebrrimit q\u00eb d\u00ebshirojm\u00eb t\u00eb krijojm\u00eb. Emri duhet t\u00eb jet\u00eb unik<\/li>\n<li><code>type<\/code> \u2014 tipi i nd\u00ebrrimit<\/li>\n<li><code>durable<\/code> \u2014 n\u00ebse vendoset <code>e v\u00ebrtet\u00eb<\/code>, at\u00ebher\u00eb <code>exchange<\/code> do t\u00eb jet\u00eb i q\u00ebndruesh\u00ebm. Do t\u00eb ruhet n\u00eb disk dhe do t\u00eb mund t\u00eb mbijetoj\u00eb rinisjen e serverit\/brokerit. N\u00ebse vlera <code>false<\/code>, at\u00ebher\u00eb <code>exchange<\/code> \u00ebsht\u00eb p\u00ebrkohshme dhe do t\u00eb fshihet kur serveri\/brokeshi t\u00eb rindez\u00eb<\/li>\n<li><code>autoDelete<\/code> \u2014 fshirje automatike. <code>Exchange<\/code> do t\u00eb fshihet kur t\u00eb fshihen t\u00eb gjitha radh\u00ebt e lidhura me t\u00eb<\/li>\n<li><code>argumente<\/code> \u2014 argumente jo t\u00eb detyrueshme. Shpesh, p\u00ebrmes argumenteve p\u00ebrcaktojn\u00eb <code>alternative exchange<\/code> (<strong>nd\u00ebrrimi alternativ<\/strong>). N\u00ebse mesazhi nuk mund t\u00eb kaloj\u00eb p\u00ebrmes rrug\u00ebs fillestare, ai mund t\u00eb d\u00ebrgohet n\u00eb nd\u00ebrrimin alternativ p\u00ebr t\u2019u rritur p\u00ebrmes nj\u00eb rruge tjet\u00ebr.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/6a352e92f94dadf58ba24de453806133.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00ebse krijimi <code>exchange<\/code> <strong>\u00ebsht\u00eb e mundur<\/strong>, at\u00ebher\u00eb serveri do t\u00eb d\u00ebrgoj\u00eb nj\u00eb p\u00ebrgjigje sinkrone te klienti <code>RPC<\/code> p\u00ebrgjigje <code>Exchange.DeclareOk<\/code>. N\u00ebse krijimi <strong>e pamundur<\/strong> (ndodhi nj\u00eb refuzim n\u00eb k\u00ebrkes\u00eb <code>Exchange.Declare<\/code>), at\u00ebher\u00eb <strong>kanali do t\u00eb mbyllet<\/strong> nga serveri p\u00ebrmes nj\u00eb komande asinkrone <code>Channel.Close<\/code> dhe klienti do t\u00eb marr\u00eb nj\u00eb p\u00ebrjashtim <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>, i cili do t\u00eb p\u00ebrmbaj\u00eb kodin e gabimit dhe p\u00ebrshkrimin e tij. <\/p>\n<p><\/p>\n<p>Bursa duhet t\u00eb krijohet para botimit t\u00eb mesazheve. N\u00ebse publikoni nj\u00eb mesazh n\u00eb nj\u00eb burs\u00eb q\u00eb nuk ekziston \u2014 <code>RabbitMQ<\/code> do ta fshij\u00eb n\u00eb heshtje at\u00eb.<\/p>\n<p><\/p>\n<h4 id=\"sozdanie-exchange-cherez-graficheskiy-interfeys\"><em>Krijimi i Exchange p\u00ebrmes nd\u00ebrfaqes grafike<\/em><\/h4>\n<p><\/p>\n<p>Hyr n\u00eb panelet e administratorit <code>RabbitMQ<\/code> si p\u00ebrdoruesi <code>guest<\/code> (emri i p\u00ebrdoruesit: <code>guest<\/code> dhe fjal\u00ebkalimi: <code>guest<\/code>). Vini re se p\u00ebrdoruesi <code>guest<\/code> mund t\u00eb lidhet vet\u00ebm nga hosti lokal. Tani kalojm\u00eb tek tab-i <code>Shk\u00ebmbimet<\/code> dhe klikojm\u00eb n\u00eb <code>Shto nj\u00eb burs\u00eb t\u00eb re<\/code>. Plot\u00ebsoni pronat:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges\" src=\"\/wp-content\/uploads\/2020\/02\/c4fd31b8cdb8182690ec8c01ccd2a460.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Shumica e pronave jan\u00eb p\u00ebrshkruar m\u00eb sip\u00ebr. K\u00ebtu do t\u00eb theksojm\u00eb se n\u00ebse caktoni <code>Internal<\/code>, at\u00ebher\u00eb bursa mund t\u00eb p\u00ebrdoret vet\u00ebm p\u00ebr <code>E2E<\/code>. <code>Prodhues<\/code> nuk do t\u00eb mund t\u00eb d\u00ebrgoj\u00eb mesazhe n\u00eb nj\u00eb burs\u00eb t\u00eb till\u00eb.<\/p>\n<p><\/p>\n<h3 id=\"zaklyuchenie\">P\u00ebrfundimi<\/h3>\n<p><\/p>\n<p>Kur zhvilloni sistemin, \u00ebsht\u00eb e p\u00ebrshtatshme t\u00eb p\u00ebrshkruani topologjin\u00eb <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\">e ruterizimit<\/a><\/noindex> p\u00ebrmes nj\u00eb grafi. Por para se t\u00eb filloni t\u00eb nd\u00ebrtoni grafikun, \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb identifikoni rrug\u00ebt me trafik t\u00eb lart\u00eb, sepse ato k\u00ebrkojn\u00eb <strong>kapacitet m\u00eb t\u00eb lart\u00eb t\u00eb kalimit<\/strong> (performanca). M\u00eb pas, mund t\u00eb klasifikohet trafiku. Dhe pastaj t\u00eb fillojm\u00eb nd\u00ebrtimin.<\/p>\n<p><\/p>\n<p>N\u00ebse n\u00eb grafikun e nd\u00ebrtuar ekziston <strong>nj\u00eb shum\u00ebz\u00eb e p\u00ebrfunduar<\/strong> e \u00e7el\u00ebsave t\u00eb rrug\u00ebs, at\u00ebher\u00eb \u00ebsht\u00eb e men\u00e7ur t\u00eb shohim drejt disa <code>nd\u00ebrrimi fanout<\/code>, t\u00eb cilat jan\u00eb 1:1 t\u00eb lidhura me \u00e7el\u00ebsin e rrug\u00ebs. Kujtojm\u00eb se <code>nd\u00ebrrimi fanout<\/code> m\u00eb i shpejti.<\/p>\n<p><\/p>\n<p>N\u00ebse numri i rrug\u00ebve <strong>po i afrohet pafund\u00ebsis\u00eb<\/strong>, at\u00ebher\u00eb \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb kushtojm\u00eb v\u00ebmendje <code>nd\u00ebrrimin e temave<\/code> ose, n\u00ebse modelimi nuk \u00ebsht\u00eb i nevojsh\u00ebm, mund t\u00eb zgjidhni <code>shk\u00ebmbim direkt<\/code>, pasi \u00ebsht\u00eb m\u00eb i shpejt\u00eb <code>nd\u00ebrrimin e temave<\/code>.<\/p>\n<p><\/p>\n<p>Kombinimet e ndryshme <code>exchange<\/code> duhet t\u00eb ndihmojn\u00eb n\u00eb gjetjen e <strong>konfiguracionit t\u00eb duhur t\u00eb shkall\u00ebzuesh\u00ebm<\/strong>, i cili p\u00ebrmbush k\u00ebrkesat aktuale dhe n\u00eb rritje t\u00eb sistemit.<\/p>\n<p><\/p>\n<p>Numri <code>exchange<\/code> dhe numri i radh\u00ebve duhet t\u00eb jet\u00eb minimal n\u00eb krahasim me numrin e rrug\u00ebve.<\/p>\n<p><\/p>\n<p>N\u00eb artikullin e ardhsh\u00ebm do t\u00eb fillojm\u00eb t\u00eb kuptojm\u00eb m\u00eb n\u00eb detaje mbi Queues dhe Bindings.<\/p>\n<p><\/p>\n<h3 id=\"ssylki\">Linke<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">Faqja e projektit RabbitMQ<\/a><\/noindex><\/li>\n<\/ul>\n<p>Burimi: <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 4.9.10 - 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. \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\" \/>\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\/sq\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/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. Pjesa 2. Po shqyrtojm\u00eb Exchanges | ProHoster","description":"Exchange \u2014 nj\u00eb k\u00ebmbim ose pik\u00eb k\u00ebmbimi. Mesazhet d\u00ebrgohen atje. Exchange shp\u00ebrndan mesazhin n\u00eb nj\u00eb ose disa radh\u00eb. Ai e drejton mesazhin n\u00eb radh\u00eb sipas lidhjeve (bindings) t\u00eb krijuara midis tij dhe radh\u00ebs. Exchange nuk \u00ebsht\u00eb nj\u00eb proces Erlang. P\u00ebr arsye shkall\u00ebzimi, exchange \u00ebsht\u00eb nj\u00eb varg (referenc\u00eb n\u00eb modulin me kodin, ku ndodhet logjika e drejtimeve) n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb integruar.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/rabbitmq-chast-2-razbiraemsya-s-exchanges","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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. \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","og:url":"https:\/\/prohoster.info\/sq\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/69621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=69621"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/69621\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/69622"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=69621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=69621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=69621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}