{"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\/sq\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","title":{"rendered":"RabbitMQ. Pjesa 1. Prezantimi. Erlang, AMQP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje, Habr! D\u00ebshiroj t\u00eb ndaj nj\u00eb udh\u00ebzues-referenc\u00eb me njohurit\u00eb q\u00eb kam arritur t\u00eb grumbulloj <code>RabbitMQ<\/code> dhe t'i p\u00ebrmbledh ato n\u00eb rekomandime dhe p\u00ebrfundime t\u00eb shkurtra. <\/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>RabbitMQ. Pjesa 1. Prezantimi. Erlang, AMQP dhe RPC<\/li>\n<li>RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges<\/li>\n<li>RabbitMQ. Pjesa 3. Duke u marr\u00eb me Queues dhe Bindings<\/li>\n<li>RabbitMQ. Pjesa 4. T\u00eb kuptojm\u00eb \u00e7far\u00eb jan\u00eb mesazhet dhe framet<\/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<h3 id=\"kratko-pro-amqp\">P\u00ebrmbledhje mbi AMQP<\/h3>\n<p><\/p>\n<blockquote><p>AMQP (Protokolli i Avancuar i Radhitjes s\u00eb Mesazheve) \u2014 nj\u00eb protokoll i hapur p\u00ebr transferimin e mesazheve midis komponent\u00ebve t\u00eb nj\u00eb sistemi. Ideja kryesore \u00ebsht\u00eb q\u00eb n\u00ebn-sistemet e ve\u00e7anta (apo aplikacionet e pavarura) mund t\u00eb shk\u00ebmbejn\u00eb mesazhe n\u00eb m\u00ebnyr\u00eb t\u00eb rast\u00ebsishme p\u00ebrmes brokerit AMQP, i cili realizon marxh\u00ebzimin, mund\u00ebsisht garanton dor\u00ebzimin, shp\u00ebrndarjen e rrjedhave t\u00eb t\u00eb dh\u00ebnave, dhe abonimin n\u00eb llojet e nevojshme t\u00eb mesazheve.<\/p><\/blockquote>\n<p>Protokolli <code>AMQP<\/code> introdukon tri koncepte:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 1. Prezantimi. 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>exchange<\/code> (pik\u00eb shk\u00ebmbimi ose shk\u00ebmbim) \u2014 n\u00eb t\u00eb d\u00ebrgohen mesazhe. Pika e shk\u00ebmbimit <strong>distribuon mesazhin<\/strong> n\u00eb nj\u00eb ose m\u00eb shum\u00eb radh\u00eb. Ajo <strong>rutesh mesazhet n\u00eb radh\u00eb<\/strong> bazuar n\u00eb lidhjet e krijuara (<code>lidhi<\/code>) midis tij dhe rendit<\/li>\n<li><code>rendit<\/code> (rendit) \u2014 nj\u00eb struktur\u00eb t\u00eb dh\u00ebnash n\u00eb disk ose n\u00eb memorien e p\u00ebrkohshme, e cila <strong>merr lidhjet me mesazhet dhe jep kopjet e mesazheve <code>konsumator\u00ebt<\/code><\/strong> (konsumator\u00ebve)<\/li>\n<li><code>lidhi<\/code> (lidhi) \u2014 nj\u00eb rregull q\u00eb <strong>informon pik\u00ebn e shk\u00ebmbimit n\u00eb cilat rendit k\u00ebto mesazhe duhet t\u00eb shkojn\u00eb<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>Prokolli funksionon mbi <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\">S\u00eb shpejti p\u00ebr Erlang<\/h3>\n<p><\/p>\n<p>Kodi burimor i projektit ndodhet n\u00eb dep <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\">GitHub<\/a><\/noindex>. Arkitektura <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\/rabbitmq-server\">RabbitMQ-server<\/a><\/noindex> bazohet n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.erlang.org\/\">Erlang<\/a><\/noindex> dhe BEAM.<\/p>\n<p><\/p>\n<blockquote><p><code>Erlang<\/code> e zhvilluar nga <code>Ericsson<\/code> n\u00eb mesin e viteve 1980 si nj\u00eb sistem i shp\u00ebrndar\u00eb, t\u00eb besuesh\u00ebm, n\u00eb koh\u00eb reale p\u00ebr aplikacione q\u00eb k\u00ebrkojn\u00eb pun\u00eb pa nd\u00ebrprerje 99,999%. <code>Erlang<\/code> p\u00ebrdoret n\u00eb industri t\u00eb ndryshme dhe aplikacione moderne, p\u00ebr shembull n\u00eb <code>WhatsApp<\/code>. M\u00eb shum\u00eb mund t\u00eb lexoni n\u00eb artikullin <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276951\/\">arkitektura e WhatsApp, t\u00eb cil\u00ebn Facebook e bleu p\u00ebr $19 miliard\u00eb<\/a><\/noindex><\/p><\/blockquote>\n<p><\/p>\n<h3 id=\"kratko-pro-rabbitmq\">S\u00eb shpejti p\u00ebr RabbitMQ<\/h3>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">RabbitMQ<\/a><\/noindex> \u2013 \u00ebsht\u00eb nj\u00eb broker mesazhesh me kod burimor t\u00eb hapur. Ai rregullon mesazhet sipas t\u00eb gjitha principeve baz\u00eb t\u00eb protokollit <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/AMQP\">AMQP<\/a><\/noindex> t\u00eb p\u00ebrshkruara n\u00eb <noindex><a rel=\"nofollow\" href=\"http:\/\/www.amqp.org\/resources\/download\">specifikacioni<\/a><\/noindex>. <code>RabbitMQ<\/code> implementon dhe plot\u00ebson protokollin <code>AMQP<\/code>.<\/p>\n<p><\/p>\n<p>Ideja kryesore e modelit t\u00eb shk\u00ebmbimit t\u00eb mesazheve n\u00eb <code>RabbitMQ<\/code> q\u00ebndron n\u00eb at\u00eb q\u00eb <code>prodhuese<\/code> (botuesi) nuk d\u00ebrgon mesazhe drejtp\u00ebrdrejt n\u00eb radh\u00eb. N\u00eb t\u00eb v\u00ebrtet\u00eb, dhe shpesh, botuesi edhe nuk e di n\u00ebse mesazhi do t\u00eb dor\u00ebzohet n\u00eb nj\u00eb radh\u00eb t\u00eb caktuar. <\/p>\n<p><\/p>\n<p>N\u00eb vend t\u00eb k\u00ebsaj, botuesi mund t\u00eb d\u00ebrgoj\u00eb mesazhe vet\u00ebm n\u00eb shk\u00ebmbim. Nga nj\u00ebra an\u00eb, shk\u00ebmbimi merr mesazhe nga botuesit, dhe nga ana tjet\u00ebr, i d\u00ebrgon ato n\u00eb radh\u00eb. Shk\u00ebmbimi duhet t\u00eb ket\u00eb nj\u00eb ide t\u00eb qart\u00eb se \u00e7far\u00eb t\u00eb b\u00ebj\u00eb me mesazhin e pranuar. A duhet t\u00eb shtohet n\u00eb nj\u00eb radh\u00eb t\u00eb caktuar? A duhet t\u00eb shtohet n\u00eb disa radh\u00eb? Apo mesazhi duhet t\u00eb injorohet.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 1. Prezantimi. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/1deaebddebde216b8f706953ddf2d3c6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00ebrmbledhja e pun\u00ebs <code>RabbitMQ<\/code> mund t\u00eb p\u00ebrshkruhet si m\u00eb posht\u00eb:<\/p>\n<p><\/p>\n<ol>\n<li>Botuesi d\u00ebrgon mesazhin n\u00eb nj\u00eb shk\u00ebmbim t\u00eb caktuar<\/li>\n<li>Shk\u00ebmbimi, pasi merr mesazhin, e drejton at\u00eb n\u00eb nj\u00eb ose disa radh\u00eb sipas rregullave t\u00eb lidhjes midis tij dhe radh\u00ebs<\/li>\n<li>Radh\u00eb ruan nj\u00eb referenc\u00eb n\u00eb k\u00ebt\u00eb mesazh. Vet\u00eb mesazhi ruhet n\u00eb memorie ose n\u00eb disk<\/li>\n<li>Sa her\u00eb q\u00eb konsumatori \u00ebsht\u00eb i gatsh\u00ebm t\u00eb marr\u00eb mesazhin nga rada, serveri krijon nj\u00eb kopje t\u00eb mesazhit p\u00ebrmes referenc\u00ebs dhe e d\u00ebrgon<\/li>\n<li>Konsumatori merr mesazhin dhe d\u00ebrgon nj\u00eb konfirmim tek brokeri<\/li>\n<li>Bler\u00ebsi, pasi merr konfirmimin, heq kopjen e mesazhit nga radh\u00ebt. Pastaj e heq nga memoria dhe disku<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"rpc\"><em>RPC<\/em><\/h4>\n<p><\/p>\n<p>Procesi <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 (th\u00ebnie e procedur\u00ebs s\u00eb larg\u00ebt)<\/a><\/noindex> q\u00ebndron n\u00eb themel t\u00eb t\u00eb gjitha nd\u00ebrveprimeve me b\u00ebrtham\u00ebn <code>RabbitMQ<\/code>. P\u00ebr shembull, diskutimet fillestare mbi kushtet e klientit me <code>RabbitMQ<\/code>, tregon nj\u00eb proces t\u00eb caktuar <code>RPC<\/code>. Sa her\u00eb q\u00eb ky proces p\u00ebrfundon, <code>RabbitMQ<\/code> do t\u00eb jet\u00eb gati t\u00eb pranoj\u00eb k\u00ebrkesa nga klienti:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 1. Prezantimi. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/059f37304f45a1f0ff625b671f6462ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Gjithashtu n\u00eb specifikim <code>AMQP<\/code> si klienti ashtu edhe serveri mund t\u00eb th\u00ebrrasin komanda. Kjo do t\u00eb thot\u00eb se klienti pret t\u00eb nd\u00ebrveproj\u00eb me serverin. Komandat jan\u00eb klasa dhe metoda. P\u00ebr shembull, <code>Connection.Start<\/code> \u2013 thirrja e metod\u00ebs <code>Start<\/code> klas\u00ebs <code>Connection<\/code>.<\/p>\n<p><\/p>\n<h4 id=\"podklyuchenie-i-kanaly\"><em>Koneksioni dhe kanalet<\/em><\/h4>\n<p><\/p>\n<p>P\u00ebr nj\u00eb shk\u00ebmbim t\u00eb till\u00eb informacioni midis klientit dhe serverit p\u00ebrdoren <strong>kanalet<\/strong>. Kanalet krijohen brenda <strong>nj\u00eb koneksioni t\u00eb caktuar<\/strong>. \u00c7do kanal \u00ebsht\u00eb i izoluar nga kanalet e tjera. N\u00eb rastin sinkron, nuk \u00ebsht\u00eb e mundur t\u00eb kryhet komanda tjet\u00ebr derisa t\u00eb marr\u00ebsh nj\u00eb p\u00ebrgjigje. <\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb pasur mund\u00ebsin\u00eb p\u00ebr t\u00eb d\u00ebrguar komanda paralelisht, \u00ebsht\u00eb e nevojshme t\u00eb hap\u00ebsh disa kanale. \u00c7do kanal krijon nj\u00eb <code>Erlang<\/code> proces t\u00eb ve\u00e7ant\u00eb. Nj\u00eb koneksion mund t\u00eb ket\u00eb shum\u00eb kanale (<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>). P\u00ebr secilin kanal ekzistojn\u00eb struktura dhe objekte n\u00eb memorie. Prandaj, sa m\u00eb shum\u00eb kanale t\u00eb ket\u00eb brenda lidhjes, aq <strong>m\u00eb shum\u00eb memorie p\u00ebrdor RabbitMQ<\/strong> p\u00ebr menaxhimin e nj\u00eb lidhjeje t\u00eb till\u00eb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. Pjesa 1. Prezantimi. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/9bc388200f4f82eb8f98cb1dd1580675.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Shembulli i thjesht\u00eb p\u00ebr krijimin e nj\u00eb lidhjeje dhe kanali duke p\u00ebrdorur <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>T\u00eb hap\u00ebsh nj\u00eb lidhje t\u00eb re p\u00ebr \u00e7do operacion, e cila nuk rekomandohet, pasi kjo <strong>do t\u00eb \u00e7oj\u00eb n\u00eb shpenzime t\u00eb m\u00ebdha<\/strong>. Kanalet gjithashtu duhet t\u00eb jen\u00eb t\u00eb p\u00ebrhershme, por shum\u00eb gabime n\u00eb protokoll \u00e7ojn\u00eb n\u00eb mbylljen e kanalit, k\u00ebshtu q\u00eb jeta e kanalit mund t\u00eb jet\u00eb m\u00eb e shkurt\u00ebr se ajo e lidhjes.<\/p>\n<p><\/p>\n<h4 id=\"gde-ispolzuetsya-rabbitmq\"><em>Ku p\u00ebrdoret RabbitMQ?<\/em><\/h4>\n<p><\/p>\n<p>N\u00eb kontekstin e mikrosh\u00ebrbimeve, protokolli <code>AMQP<\/code> dhe implementimi i tij n\u00eb <code>RabbitMQ<\/code> shpesh p\u00ebrdoret p\u00ebr <strong>interaksionin asinkron<\/strong> midis sh\u00ebrbimeve.<\/p>\n<p><\/p>\n<p>N\u00eb kontekstin e <code>IIOT<\/code> protokolli <code>AMQP<\/code> dhe implementimi i tij n\u00eb <code>RabbitMQ<\/code> p\u00ebrdoret p\u00ebr shk\u00ebmbimin e t\u00eb dh\u00ebnave midis server\u00ebve (server-server). Gjithashtu p\u00ebrdoret plugini <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/mqtt.html\">MQTT Plugin RabbitMQ<\/a><\/noindex> si nj\u00eb implementim i protokollit <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/MQTT\">MQTT<\/a><\/noindex> p\u00ebr d\u00ebrgimin e t\u00eb dh\u00ebnave midis sensorit dhe serverit n\u00eb mjedise me shpejt\u00ebsi t\u00eb ul\u00ebt dhe latenc\u00eb t\u00eb lart\u00eb (lista e plot\u00eb e protokolleve t\u00eb mb\u00ebshtetur \u00ebsht\u00eb p\u00ebrshkruar n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/protocols.html\">faqja e projektit<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>N\u00eb artikullin e ardhsh\u00ebm do t\u00eb fillojm\u00eb t\u00eb kuptojm\u00eb m\u00eb holl\u00ebsisht rreth Exchanges.<\/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\/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 4.9.10 - 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. \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\" \/>\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-1-introduction-erlang-amqp\" \/>\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 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. \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/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. Pjesa 1. Hyrje. Erlang, AMQP | ProHoster","description":"Mir\u00ebdita, Habr! D\u00ebshiroj t\u00eb ndaj nj\u00eb udh\u00ebzues referues me njohurit\u00eb q\u00eb arrita t\u00eb mbledh lidhur me RabbitMQ dhe t'i p\u00ebrmbledh ato n\u00eb rekomandime dhe p\u00ebrfundime t\u00eb shkurtra. P\u00ebrmbajtja RabbitMQ. Pjesa 1. Hyrje. Erlang, AMQP dhe RPC RabbitMQ. Pjesa 2. T\u00eb kuptojm\u00eb Exchanges RabbitMQ. Pjesa 3. T\u00eb kuptojm\u00eb Queues dhe Bindings RabbitMQ. Pjesa 4. T\u00eb kuptojm\u00eb se \u00e7far\u00eb jan\u00eb mesazhet dhe framet RabbitMQ. Pjesa","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","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 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. \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","og:url":"https:\/\/prohoster.info\/sq\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/69346","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=69346"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/69346\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/69347"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=69346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=69346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=69346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}