{"id":69346,"date":"2020-02-18T14:44:04","date_gmt":"2020-02-18T11:44:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/rabbitmq-chast-1-introduction-erlang-amqp"},"modified":"2020-03-03T16:14:59","modified_gmt":"2020-03-03T13:14:59","slug":"rabbitmq-chast-1-introduction-erlang-amqp","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","title":{"rendered":"RabbitMQ. Deo 1. Uvod. Erlang, AMQP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dober dan, Habr! Rad bi delil u\u010dbenik-priro\u010dnik znanj, ki sem jih uspel zbrati o <code>RabbitMQ<\/code> in strniti v kratke priporo\u010dila in zaklju\u010dke. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"oglavlenie\">Taula de continguts<\/h3>\n<p><\/p>\n<ul>\n<li>RabbitMQ. Del 1. Introducci\u00f3. Erlang, AMQP i RPC<\/li>\n<li>RabbitMQ. Del 2. Lletra amb Exchanges<\/li>\n<li>RabbitMQ. Del 3. Lletra amb Queues i Bindings<\/li>\n<li>RabbitMQ. Del 4. Poglobimo se v to, kaj so sporo\u010dila in okviri<\/li>\n<li>RabbitMQ. Del 5. Rendiment de la publicaci\u00f3 i consum de missatges<\/li>\n<li>RabbitMQ. Del 6. Visi\u00f3 general dels m\u00f2duls Federation i Shovel<\/li>\n<li>RabbitMQ. Del 7. Detalls sobre la connexi\u00f3 i el canal<\/li>\n<li>RabbitMQ. Del 8. RabbitMQ en .NET<\/li>\n<li>RabbitMQ. Del 9. Monitoratge<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"kratko-pro-amqp\">Kratka razlaga AMQP<\/h3>\n<p><\/p>\n<blockquote><p>AMQP (Advanced Message Queuing Protocol) je odprti protokol za prenos sporo\u010dil med komponentami sistema. Osnovna ideja je, da si lahko posamezni pod sistemi (ali neodvisne aplikacije) izmenjujejo sporo\u010dila na poljuben na\u010din preko AMQP-posrednika, ki opravlja usmerjanje, morebiti zagotavlja dostavo, porazdelitev podatkovnih tokov ter naro\u010danje na potrebne tipe sporo\u010dil.<\/p><\/blockquote>\n<p>Protokol <code>AMQP<\/code> uvaja tri pojme:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Deo 1. Uvod. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/bb523c277776ca1ae13fcb9eb10788df.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ul>\n<li><code>\u2014 ime izmenjevalnika<\/code> (izmenjevalna to\u010dka ali izmenjava) - v to se po\u0161iljajo sporo\u010dila. Izmenjevalna to\u010dka <strong>porazdeli sporo\u010dilo<\/strong> v eno ali ve\u010d \u010dakalnih vrst. Ona <strong>usmerja sporo\u010dila v \u010dakalno vrsto<\/strong> na podlagi ustvarjenih povezav (<code>binding<\/code>) med njo in \u010dakalno vrsto<\/li>\n<li><code>vrsta<\/code> (\u010dakalna vrsta) - podatkovna struktura na disku ali v pomnilniku, ki <strong>hrani povezave na sporo\u010dila in daje kopije sporo\u010dil <code>consumidors<\/code><\/strong> (potro\u0161nikom)<\/li>\n<li><code>binding<\/code> (povezava) - pravilo, ki <strong>sporo\u010da izmenjevalni to\u010dki, v katero \u010dakalno vrsto morajo ta sporo\u010dila priti<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>Protokol deluje nad <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amqp.org\/product\/architecture\">TCP\/IP<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"kratko-pro-erlang\">Kratka razlaga Erlang<\/h3>\n<p><\/p>\n<p>Izvorna koda projekta se nahaja v repozitoriju na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\">GitHub<\/a><\/noindex>. Arhitektura <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\/rabbitmq-server\">RabbitMQ-server<\/a><\/noindex> temelji na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.erlang.org\/\">Erlang<\/a><\/noindex> in BEAM.<\/p>\n<p><\/p>\n<blockquote><p><code>Erlang<\/code> razvil je podjetje <code>Ericsson<\/code> v sredini 1980-ih kot porazdeljen, odpornoten sistem v realnem \u010dasu za aplikacije, ki zahtevajo brezokvarno delovanje 99,999%. <code>Erlang<\/code> se uporablja v razli\u010dnih panogah in sodobnih aplikacijah, na primer v <code>WhatsApp<\/code>. Ve\u010d o tem lahko preberete v \u010dlanku <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276951\/\">arhitektura WhatsApp, ki ga je Facebook kupil za 19 milijard dolarjev<\/a><\/noindex><\/p><\/blockquote>\n<p><\/p>\n<h3 id=\"kratko-pro-rabbitmq\">Kratka razlaga RabbitMQ<\/h3>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">RabbitMQ<\/a><\/noindex> je posrednik sporo\u010dil z odprtim izvorom. Usmerja sporo\u010dila po vseh osnovnih na\u010delih protokola <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/AMQP\">AMQP<\/a><\/noindex> opisanih v <noindex><a rel=\"nofollow\" href=\"http:\/\/www.amqp.org\/resources\/download\">specifikacije<\/a><\/noindex>. <code>RabbitMQ<\/code> izvaja in dopolnjuje protokol <code>AMQP<\/code>.<\/p>\n<p><\/p>\n<p>Osnovna ideja modela izmenjave sporo\u010dil v <code>RabbitMQ<\/code> je, da <code>producer<\/code> (izdajatelj) ne po\u0161ilja sporo\u010dil neposredno v \u010dakalno vrsto. V bistvu in precej pogosto izdajatelj celo ne ve, ali bo sporo\u010dilo sploh dostavljeno v katero koli \u010dakalno vrsto. <\/p>\n<p><\/p>\n<p>Namesto tega lahko izdajatelj po\u0161ilja sporo\u010dila le na izmenjavo. Na eni strani izmenjava prejme sporo\u010dila od izdajateljev, na drugi pa jih po\u0161ilja v vrste. Izmenjava mora natan\u010dno vedeti, kaj storiti s prejetim sporo\u010dilom. Ali naj se doda dolo\u010denemu vrsti? Ali naj se doda ve\u010d vrstam? Ali je sporo\u010dilo treba prezreti?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Deo 1. Uvod. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/1deaebddebde216b8f706953ddf2d3c6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Delo lahko na kratko opi\u0161emo takole: <code>RabbitMQ<\/code> to lahko opi\u0161emo na naslednji na\u010din:<\/p>\n<p><\/p>\n<ol>\n<li>Izdajatelj po\u0161lje sporo\u010dilo dolo\u010deni izmenjavi<\/li>\n<li>Izmenjava, ko prejme sporo\u010dilo, usmeri to v eno ali ve\u010d vrst v skladu s pravili vezave med njo in vrsto<\/li>\n<li>Vrsta hrani povezavo na to sporo\u010dilo. Samo sporo\u010dilo je shranjeno v pomnilniku ali na disku<\/li>\n<li>Ko je porabnik pripravljen prejeti sporo\u010dilo iz vrste, stre\u017enik ustvari kopijo sporo\u010dila na povezavi in ga po\u0161lje<\/li>\n<li>Porabnik prejme sporo\u010dilo in po\u0161lje potrditev posredniku<\/li>\n<li>Posrednik, ko prejme potrditev, odstrani kopijo sporo\u010dila iz vrste. Nato jo odstrani iz RAM-a in z diska<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"rpc\"><em>RPC<\/em><\/h4>\n<p><\/p>\n<p>Postopek <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A3%D0%B4%D0%B0%D0%BB%D1%91%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80\">RPC (oddaljen klic funkcij)<\/a><\/noindex> je osnova prakti\u010dno vseh interakcij z jedrom <code>RabbitMQ<\/code>. Na primer, prvotna razprava o pogojih stranke z <code>RabbitMQ<\/code>, prikazuje dolo\u010den proces <code>RPC<\/code>. Ko se ta zaporedje zaklju\u010di, <code>RabbitMQ<\/code> bo pripravljen sprejemati zahteve od stranke:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Deo 1. Uvod. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/059f37304f45a1f0ff625b671f6462ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prav tako v specifikaciji <code>AMQP<\/code> lahko tako stranka kot stre\u017enik kli\u010deta ukaze. To pomeni, da stranka pri\u010dakuje interakcijo s stre\u017enikom. Ukazi so razredi in metode. Na primer, <code>Connection.Start<\/code> \u2013 klic metode <code>Za\u010dni<\/code> klasa <code>Povezava<\/code>.<\/p>\n<p><\/p>\n<h4 id=\"podklyuchenie-i-kanaly\"><em>Povezava in kanali<\/em><\/h4>\n<p><\/p>\n<p>Za tak\u0161no izmenjavo informacij med stranko in stre\u017enikom se uporabljajo <strong>kanali<\/strong>. Kanali so ustvarjeni v okviru <strong>dolo\u010denega povezovanja<\/strong>. Vsak kanal je izoliran od drugih kanalov. V sinhronem primeru ni mogo\u010de izvesti naslednjega ukaza, dokler ne prejmete odgovora. <\/p>\n<p><\/p>\n<p>Da bi lahko hkrati po\u0161iljali ukaze, je treba odpreti ve\u010d kanalov. Vsak kanal ustvari lo\u010den <code>Erlang<\/code> postopek. Ena povezava lahko ima ve\u010d kanalov (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%BF%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">multiplexing<\/a><\/noindex>). Za vsak kanal obstajajo dolo\u010dene strukture in objekti v pomnilniku. Zato ve\u010d kot je kanalov v okviru povezave, ve\u010d <strong>pomnilnika uporablja RabbitMQ<\/strong> za upravljanje te povezave.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Deo 1. Uvod. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/9bc388200f4f82eb8f98cb1dd1580675.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Preprost primer ustvarjanja povezave in kanala s pomo\u010djo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/dotnet.html\">RabbitMQ.Client<\/a><\/noindex>:<\/p>\n<p><\/p>\n<pre><code class=\"cs\">\/\/ ...\nprivate void TryConnect()\n{\n    var factory = new ConnectionFactory() \n    {\n        HostName = &quot;host_name&quot;,\n        UserName = &quot;user_name&quot;,\n        Password = &quot;p@ssword&quot;,\n        \/\/ \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u043a\u043e\u0433\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\n        \/\/ \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0435\u0432 \u0441\u0435\u0442\u0438 \n        AutomaticRecoveryEnabled = true\n    };\n    _connection = factory.CreateConnection();\n}\n\/\/ ...\npublic void CreateChanel()\n{\n    _channel = _connection.CreateModel();\n    \/\/ other options \n}<\/code><\/pre>\n<p><\/p>\n<p>Odprtje nove povezave za vsako operacijo se strogo ne priporo\u010da, saj to <strong>privede do velikih stro\u0161kov<\/strong>. Kanali morajo biti prav tako stalni, vendar \u0161tevilne napake protokola povzro\u010dajo zaprtje kanala, zato je lahko \u017eivljenjska doba kanala kraj\u0161a od \u017eivljenjske dobe povezave.<\/p>\n<p><\/p>\n<h4 id=\"gde-ispolzuetsya-rabbitmq\"><em>Kje se uporablja RabbitMQ?<\/em><\/h4>\n<p><\/p>\n<p>V kontekstu mikroservisov se protokol <code>AMQP<\/code> in njegova realizacija v <code>RabbitMQ<\/code> pogosto uporabljata za <strong>asinhrono interakcijo<\/strong> med storitvami.<\/p>\n<p><\/p>\n<p>V kontekstu <code>IIOT<\/code> protokol <code>AMQP<\/code> in njegova realizacija v <code>RabbitMQ<\/code> se uporablja za izmenjavo podatkov med stre\u017eniki (stre\u017enik-stre\u017enik). Prav tako se uporablja vti\u010dnik <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/mqtt.html\">MQTT Plugin RabbitMQ<\/a><\/noindex> ki je realizacija protokola <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/MQTT\">MQTT<\/a><\/noindex> za prenos podatkov med senzorjem in stre\u017enikom v nizkodo\u010dnih okoljih z visokimi zakasnitvami (popoln seznam podprtih protokolov je naveden na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/protocols.html\">na spletni strani projekta<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>V naslednjem \u010dlanku se bomo podrobneje lotili Exchanges.<\/p>\n<p><\/p>\n<h3 id=\"ssylki\">Povezave<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">Spletna stran projekta RabbitMQ<\/a><\/noindex><\/li>\n<\/ul>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/488654\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u043e\u043c-\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0437\u043d\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e RabbitMQ \u0438 \u0441\u0436\u0430\u0442\u044c \u0432 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u044b. \u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435 RabbitMQ. \u0427\u0430\u0441\u0442\u044c 1. Introduction. Erlang, AMQP \u0438 RPC RabbitMQ. \u0427\u0430\u0441\u0442\u044c 2. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 Exchanges RabbitMQ. \u0427\u0430\u0441\u0442\u044c 3. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 Queues \u0438 Bindings RabbitMQ. \u0427\u0430\u0441\u0442\u044c 4. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e-\u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0444\u0440\u0435\u0439\u043c\u044b RabbitMQ. \u0427\u0430\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":69347,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-69346","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.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u043e\u043c-\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0437\u043d\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e RabbitMQ \u0438 \u0441\u0436\u0430\u0442\u044c \u0432 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u044b.\" \/>\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\/sl\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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 1. Introduction. Erlang, AMQP | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u043e\u043c-\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0437\u043d\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e RabbitMQ \u0438 \u0441\u0436\u0430\u0442\u044c \u0432 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u044b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp\" \/>\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-18T11:44:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:59+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. Del 1. Uvod. Erlang, AMQP | ProHoster","description":"Dober dan, Habr! \u017delim deliti priro\u010dnik-celovit vir znanja, ki sem ga uspel zbrati o RabbitMQ in strniti v kratke priporo\u010dila in ugotovitve.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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 1. Introduction. Erlang, AMQP | ProHoster","og:description":"\u0414\u043e\u0431\u0440\u044b\u0439 \u0434\u0435\u043d\u044c, \u0425\u0430\u0431\u0440! \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0443\u0447\u0435\u0431\u043d\u0438\u043a\u043e\u043c-\u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0437\u043d\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u043e RabbitMQ \u0438 \u0441\u0436\u0430\u0442\u044c \u0432 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u044b.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","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-18T11:44:04+00:00","article:modified_time":"2020-03-03T13:14:59+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"69346","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 19:24:45","updated":"2022-10-05 05:26:04","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/69346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=69346"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/69346\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/69347"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=69346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=69346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=69346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}