{"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\/az\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","title":{"rendered":"RabbitMQ. I Hiss\u0259. Giri\u015f. Erlang, AMQP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Salam, Habr! Toplad\u0131\u011f\u0131m bilgilere dayanarak bir rehber kitapla payla\u015fmak istiyorum <code>RabbitMQ<\/code> ve bunlar\u0131 k\u0131sa \u00f6neriler ve sonu\u00e7lar halinde s\u0131k\u0131\u015ft\u0131rmak. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"oglavlenie\">M\u00fcnd\u0259ricat<\/h3>\n<p><\/p>\n<ul>\n<li>RabbitMQ. Hiss\u0259 1. Giri\u015f. Erlang, AMQP v\u0259 RPC<\/li>\n<li>RabbitMQ. Hiss\u0259 2. Exchanges il\u0259 tan\u0131\u015f oluruq<\/li>\n<li>RabbitMQ. Hiss\u0259 3. Queues v\u0259 Bindings il\u0259 tan\u0131\u015f oluruq<\/li>\n<li>RabbitMQ. B\u00f6l\u00fcm 4. Mesajlar ve \u00e7er\u00e7eveler hakk\u0131nda konu\u015fal\u0131m<\/li>\n<li>RabbitMQ. Hiss\u0259 5. Mesajlar\u0131n n\u0259\u015fr v\u0259 istehlak performans\u0131<\/li>\n<li>RabbitMQ. Hiss\u0259 6. Federation v\u0259 Shovel modullar\u0131n\u0131n icmal\u0131<\/li>\n<li>RabbitMQ. Hiss\u0259 7. Ba\u011flant\u0131 v\u0259 Kanal haqq\u0131nda \u0259trafl\u0131<\/li>\n<li>RabbitMQ. Hiss\u0259 8. RabbitMQ .NET-d\u0259<\/li>\n<li>RabbitMQ. Hiss\u0259 9. Monitorinq<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"kratko-pro-amqp\">AMQP hakk\u0131nda k\u0131saca<\/h3>\n<p><\/p>\n<blockquote><p>AMQP (Advanced Message Queuing Protocol) \u2014 sistem bile\u015fenleri aras\u0131nda mesaj iletimi i\u00e7in a\u00e7\u0131k bir protokold\u00fcr. Temel fikir, ba\u011f\u0131ms\u0131z alt sistemlerin (veya ba\u011f\u0131ms\u0131z uygulamalar\u0131n) AMQP arac\u0131s\u0131 \u00fczerinden mesajlar\u0131 herhangi bir \u015fekilde iletebilmelerini sa\u011flamakt\u0131r; bu arac\u0131 y\u00f6nlendirme yapar, teslimat\u0131 garanti eder, veri ak\u0131\u015flar\u0131n\u0131 da\u011f\u0131t\u0131r ve gereken mesaj t\u00fcrlerine abone olmay\u0131 sa\u011flar.<\/p><\/blockquote>\n<p>Protokol <code>. Bu, protokolun geni\u015fl\u0259ndirilm\u0259sidir<\/code> \u00fc\u00e7 kavram\u0131 tan\u0131t\u0131r:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. I Hiss\u0259. Giri\u015f. 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> (de\u011fi\u015fim noktas\u0131 veya borsa) \u2014 mesajlar\u0131n g\u00f6nderildi\u011fi yerdir. De\u011fi\u015fim noktas\u0131 <strong>mesaj\u0131<\/strong> bir veya daha fazla kuyru\u011fa y\u00f6nlendirme yapar. O, <strong>mesajlar\u0131 s\u0131ralara y\u00f6nl\u0259ndirir<\/strong> yarad\u0131lan \u0259laq\u0259l\u0259r \u0259sas\u0131nda (<code>binding<\/code>) ile o ve kuyruk aras\u0131ndaki<\/li>\n<li><code>queue<\/code> (kuyruk) \u2014 sabit disk veya RAM'deki bir veri yap\u0131s\u0131d\u0131r <strong>mesajlar\u0131n referanslar\u0131n\u0131 saklar ve mesajlar\u0131n kopyalar\u0131n\u0131 da\u011f\u0131t\u0131r <code>consumers<\/code><\/strong> (t\u00fcketicilere)<\/li>\n<li><code>binding<\/code> (ba\u011flama) \u2014 bu kural, <strong>de\u011fi\u015fim noktas\u0131na, bu mesajlar\u0131n hangi kuyruklara y\u00f6nlendirilmesi gerekti\u011fini bildirir.<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>Protokol, <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\">Erlang hakk\u0131nda k\u0131saca<\/h3>\n<p><\/p>\n<p>Projenin kaynak kodu, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\">GitHub<\/a><\/noindex>reposunda bulunmaktad\u0131r. Mimari <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\/rabbitmq-server\">RabbitMQ-server<\/a><\/noindex> \u00fczerine kurulmu\u015ftur <noindex><a rel=\"nofollow\" href=\"https:\/\/www.erlang.org\/\">Erlang<\/a><\/noindex> ve BEAM.<\/p>\n<p><\/p>\n<blockquote><p><code>Erlang<\/code> 1980'lerin ortalar\u0131nda <code>Ericsson taraf\u0131ndan geli\u015ftirilmi\u015ftir<\/code> da\u011f\u0131t\u0131k, hataya dayan\u0131kl\u0131 bir ger\u00e7ek zamanl\u0131 sistem olarak, kesintisiz \u00e7al\u0131\u015fmay\u0131 gerektiren uygulamalar i\u00e7in ,999 \u00e7al\u0131\u015fma s\u00fcresine sahiptir. <code>Erlang<\/code> farkl\u0131 sekt\u00f6rlerde ve modern uygulamalarda kullan\u0131lmaktad\u0131r, \u00f6rne\u011fin <code>WhatsApp<\/code>. Detaylar\u0131 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276951\/\">Facebook'un 19 milyar dolara sat\u0131n ald\u0131\u011f\u0131 WhatsApp mimarisi makalesinde bulabilirsiniz.<\/a><\/noindex><\/p><\/blockquote>\n<p><\/p>\n<h3 id=\"kratko-pro-rabbitmq\">RabbitMQ hakk\u0131nda k\u0131saca<\/h3>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">RabbitMQ<\/a><\/noindex> a\u00e7\u0131k kaynakl\u0131 bir mesaj arac\u0131s\u0131d\u0131r. Mesajlar\u0131, <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/AMQP\">. Bu, protokolun geni\u015fl\u0259ndirilm\u0259sidir<\/a><\/noindex> belirlenen temel protokol ilkelerine g\u00f6re y\u00f6nlendirir. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.amqp.org\/resources\/download\">standartlara<\/a><\/noindex>. <code>RabbitMQ<\/code> a\u00e7\u0131klanan <code>. Bu, protokolun geni\u015fl\u0259ndirilm\u0259sidir<\/code>.<\/p>\n<p><\/p>\n<p>uygular ve geli\u015ftirir. <code>RabbitMQ<\/code> Mesajla\u015fma modelinin temeli, <code>\u00fcretici<\/code> (yay\u0131nc\u0131), mesajlar\u0131 do\u011frudan kuyru\u011fa g\u00f6ndermemektedir. Asl\u0131nda, yay\u0131nc\u0131 \u00e7o\u011fu zaman bir mesaj\u0131n herhangi bir kuyru\u011fa ula\u015f\u0131p ula\u015fmayaca\u011f\u0131n\u0131 bile bilmez. <\/p>\n<p><\/p>\n<p>Bunun yerine, yay\u0131nc\u0131 mesajlar\u0131 yaln\u0131zca de\u011fi\u015fime g\u00f6nderebilir. Bir yandan de\u011fi\u015fim, yay\u0131nc\u0131lardan mesaj al\u0131rken, di\u011fer yandan bu mesajlar\u0131 kuyru\u011fa g\u00f6nderir. De\u011fi\u015fim, al\u0131nan mesajla ne yap\u0131laca\u011f\u0131n\u0131 kesinlikle bilmelidir. Belirli bir kuyru\u011fa eklenmeli mi? Birden fazla kuyru\u011fa m\u0131 eklenmeli? Yoksa mesaj g\u00f6z ard\u0131 m\u0131 edilmelidir?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. I Hiss\u0259. Giri\u015f. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/1deaebddebde216b8f706953ddf2d3c6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u0130\u015fleyi\u015f k\u0131saca \u015f\u00f6yle tan\u0131mlanabilir: <code>RabbitMQ<\/code> Yay\u0131nc\u0131, bir mesaja belirli bir de\u011fi\u015fime g\u00f6nderir.<\/p>\n<p><\/p>\n<ol>\n<li>De\u011fi\u015fim, ald\u0131\u011f\u0131 mesaj\u0131, kendisiyle kuyruk aras\u0131ndaki ba\u011flama kurallar\u0131na g\u00f6re bir veya daha fazla kuyru\u011fa y\u00f6nlendirir.<\/li>\n<li>Kuyruk, bu mesaja olan referans\u0131 saklar. Mesaj\u0131n kendisi RAM'de veya diskte saklan\u0131r.<\/li>\n<li>S\u0131ra bu mesaja ba\u011flant\u0131 saxlay\u0131r. \u00d6z mesaj\u0131 is\u0259 yadda\u015fda v\u0259 ya diskl\u0259rd\u0259 saxlan\u0131l\u0131r.<\/li>\n<li>\u0130stehlak\u00e7\u0131, n\u00f6vb\u0259d\u0259n mesaj\u0131 alma\u011fa haz\u0131r olduqda, server mesaj\u0131n bir n\u00fcsx\u0259sini \u0259laq\u0259 il\u0259 yarad\u0131r v\u0259 g\u00f6nd\u0259rir.<\/li>\n<li>\u0130stehlak\u00e7\u0131 mesaj\u0131 al\u0131r v\u0259 broker\u0259 t\u0259sdiq g\u00f6nd\u0259rir.<\/li>\n<li>Broker, t\u0259sdiqi ald\u0131qda, mesaj\u0131n bir n\u00fcsx\u0259sini n\u00f6vb\u0259d\u0259n silir. Sonra onu \u0259m\u0259li yadda\u015fdan v\u0259 diskd\u0259n \u00e7\u0131xar\u0131r.<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"rpc\"><em>server\u0259 sor\u011fu edilm\u0259si il\u0259 h\u0259yata ke\u00e7irilir. Sor\u011fu<\/em><\/h4>\n<p><\/p>\n<p>Proses <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 (uzaq prosedur \u00e7a\u011f\u0131r\u0131\u015f\u0131)<\/a><\/noindex> dem\u0259k olar ki, b\u00fct\u00fcn n\u00fcv\u0259y\u0259 olan qar\u015f\u0131l\u0131ql\u0131 \u0259laq\u0259l\u0259rin \u0259sas\u0131n\u0131 t\u0259\u015fkil edir <code>RabbitMQ<\/code>. M\u0259s\u0259l\u0259n, m\u00fc\u015ft\u0259ri il\u0259 \u015f\u0259rtl\u0259r bar\u0259d\u0259 ilkin m\u00fczakir\u0259l\u0259r, <code>RabbitMQ<\/code>, m\u00fc\u0259yy\u0259n bir prosesi g\u00f6st\u0259rir. <code>server\u0259 sor\u011fu edilm\u0259si il\u0259 h\u0259yata ke\u00e7irilir. Sor\u011fu<\/code>. Bu ard\u0131c\u0131ll\u0131q bitdikd\u0259n sonra, <code>RabbitMQ<\/code> m\u00fc\u015ft\u0259rid\u0259n t\u0259l\u0259b q\u0259bul etm\u0259y\u0259 haz\u0131r olacaq:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. I Hiss\u0259. Giri\u015f. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/059f37304f45a1f0ff625b671f6462ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Eyni zamanda spesifikasiyada <code>. Bu, protokolun geni\u015fl\u0259ndirilm\u0259sidir<\/code> h\u0259m m\u00fc\u015ft\u0259ri, h\u0259m d\u0259 server \u0259mrl\u0259ri \u00e7a\u011f\u0131rmaq imkan\u0131na malikdir. Bu, m\u00fc\u015ft\u0259rinin serverl\u0259 qar\u015f\u0131l\u0131ql\u0131 \u0259laq\u0259y\u0259 girm\u0259sini g\u00f6zl\u0259diyini bildirir. \u018fmrl\u0259r \u2013 sinifl\u0259r v\u0259 metodlard\u0131r. M\u0259s\u0259l\u0259n, <code>Connection.Start<\/code> \u2013 metod \u00e7a\u011f\u0131r\u0131\u015f\u0131d\u0131r. <code>Ba\u015flamaq<\/code> sinfi <code>Connection<\/code>.<\/p>\n<p><\/p>\n<h4 id=\"podklyuchenie-i-kanaly\"><em>Ba\u011flant\u0131 v\u0259 kanallar<\/em><\/h4>\n<p><\/p>\n<p>Bel\u0259likl\u0259, m\u00fc\u015ft\u0259ri il\u0259 server aras\u0131nda m\u0259lumat m\u00fcbadil\u0259si \u00fc\u00e7\u00fcn <strong>kanallardan istifad\u0259 olunur.<\/strong>. Kanallar m\u00fc\u0259yy\u0259n bir ba\u011flant\u0131 \u00e7\u0259r\u00e7iv\u0259sind\u0259 yarad\u0131l\u0131r. <strong>. H\u0259r kanal dig\u0259r kanallardan izolyasiyad\u0131r. Sinxron halda, bir cavab al\u0131nana q\u0259d\u0259r n\u00f6vb\u0259ti \u0259mri yerin\u0259 yetirm\u0259k m\u00fcmk\u00fcn deyil.<\/strong>\u018fmrl\u0259ri paralel olaraq g\u00f6nd\u0259r\u0259 bilm\u0259k \u00fc\u00e7\u00fcn bir ne\u00e7\u0259 kanal a\u00e7maq z\u0259ruridir. H\u0259r kanal ayr\u0131 bir <\/p>\n<p><\/p>\n<p>proses yarad\u0131r. Bir ba\u011flant\u0131 bir \u00e7ox kanal ( <code>Erlang<\/code> \u00e7oxsayl\u0131 \u015f\u0259kild\u0259 istifad\u0259<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\">). H\u0259r kanal \u00fc\u00e7\u00fcn yadda\u015fda m\u00fc\u0259yy\u0259n strukturlar v\u0259 obyektl\u0259r m\u00f6vcuddur. Buna g\u00f6r\u0259 d\u0259, bir ba\u011flant\u0131 \u00e7\u0259r\u00e7iv\u0259sind\u0259 daha \u00e7ox kanal olduqda,<\/a><\/noindex>RabbitMQ <strong>bu ba\u011flant\u0131n\u0131 idar\u0259 etm\u0259k \u00fc\u00e7\u00fcn daha \u00e7ox yadda\u015f istifad\u0259 edir.<\/strong> Ehtiyatl\u0131 bir n\u00fcmun\u0259 olaraq<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"RabbitMQ. I Hiss\u0259. Giri\u015f. Erlang, AMQP\" src=\"\/wp-content\/uploads\/2020\/02\/9bc388200f4f82eb8f98cb1dd1580675.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>kanal yaratmaq v\u0259 ba\u011flant\u0131 qurmaq \u00fc\u00e7\u00fcn <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/dotnet.html\">\u2013 yaratmaq ist\u0259diyimiz m\u00fcbadil\u0259nin ad\u0131d\u0131r. Adun unikal olmas\u0131 t\u0259l\u0259b olunur<\/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>H\u0259r \u0259m\u0259liyyat \u00fc\u00e7\u00fcn yeni bir ba\u011flant\u0131 a\u00e7maq t\u00f6vsiy\u0259 edilmir, \u00e7\u00fcnki bu, <strong>b\u00f6y\u00fck x\u0259rcl\u0259r\u0259 s\u0259b\u0259b olacaq.<\/strong>. Kanallar daimi olmal\u0131d\u0131r, lakin \u00e7oxsayl\u0131 protokol x\u0259talar\u0131 kanal\u0131 ba\u011flama\u011fa s\u0259b\u0259b olur, ona g\u00f6r\u0259 d\u0259 kanal\u0131n \u00f6mr\u00fc ba\u011flant\u0131dan q\u0131sa ola bil\u0259r.<\/p>\n<p><\/p>\n<h4 id=\"gde-ispolzuetsya-rabbitmq\"><em>RabbitMQ harada istifad\u0259 olunur?<\/em><\/h4>\n<p><\/p>\n<p>Mikroservis kontextind\u0259 protokol <code>. Bu, protokolun geni\u015fl\u0259ndirilm\u0259sidir<\/code> v\u0259 onun t\u0259tbiqi <code>RabbitMQ<\/code> sisteml\u0259r aras\u0131nda <strong>asinxron qar\u015f\u0131l\u0131ql\u0131 \u0259laq\u0259 \u00fc\u00e7\u00fcn tez-tez istifad\u0259 olunur.<\/strong> Kontekstd\u0259<\/p>\n<p><\/p>\n<p>IIOT <code>protokolu<\/code> serverl\u0259r aras\u0131nda m\u0259lumat m\u00fcbadil\u0259si \u00fc\u00e7\u00fcn istifad\u0259 olunur (serverd\u0259n server\u0259). Eyni zamanda, plugin istifad\u0259 olunur <code>. Bu, protokolun geni\u015fl\u0259ndirilm\u0259sidir<\/code> v\u0259 onun t\u0259tbiqi <code>RabbitMQ<\/code> MQTT Plugin RabbitMQ <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/mqtt.html\">MQTT protokolunun t\u0259tbiqi<\/a><\/noindex> m\u0259lumatlar\u0131n sensor il\u0259 server aras\u0131nda a\u015fa\u011f\u0131 s\u00fcr\u0259tli m\u00fchitl\u0259rd\u0259 y\u00fcks\u0259k gecikm\u0259 il\u0259 \u00f6t\u00fcr\u00fclm\u0259si \u00fc\u00e7\u00fcn (d\u0259st\u0259kl\u0259n\u0259n protokollar\u0131n tam siyah\u0131s\u0131 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/MQTT\">Sonrak\u0131 m\u0259qal\u0259d\u0259 Exchanges il\u0259 ba\u011fl\u0131 daha \u0259trafl\u0131 m\u00fczakir\u0259 ed\u0259c\u0259yik.<\/a><\/noindex> Windows 10X, b\u0259zi m\u0259hdudiyy\u0259tl\u0259rl\u0259 Win32 t\u0259tbiql\u0259rini i\u015f\u0259 salma\u011f\u0131 bacaracaq. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/protocols.html\">sayt\u0131nda<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>Salam, Habr! RabbitMQ il\u0259 ba\u011fl\u0131 toplad\u0131\u011f\u0131m bilgil\u0259ri payla\u015fmaq, onlar\u0131 q\u0131sa t\u00f6vsiy\u0259l\u0259r v\u0259 n\u0259tic\u0259l\u0259r hal\u0131na g\u0259tirm\u0259k ist\u0259yir\u0259m.<\/p>\n<p><\/p>\n<h3 id=\"ssylki\">Ba\u011flant\u0131lar<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">RabbitMQ layih\u0259sinin veb-sayt\u0131<\/a><\/noindex><\/li>\n<\/ul>\n<p>M\u0259nb\u0259: <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.0.1 - 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\/az\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"az_AZ\" \/>\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\/az\/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. B\u00f6l\u00fcm 1. Tan\u0131t\u0131m. Erlang, AMQP | ProHoster","description":"Salam, Habr! RabbitMQ il\u0259 ba\u011fl\u0131 toplad\u0131\u011f\u0131m bilgil\u0259ri payla\u015fmaq ist\u0259yir\u0259m.","canonical_url":"https:\/\/prohoster.info\/az\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"az_AZ","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\/az\/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\/az\/wp-json\/wp\/v2\/posts\/69346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/comments?post=69346"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/posts\/69346\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media\/69347"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/media?parent=69346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/categories?post=69346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/az\/wp-json\/wp\/v2\/tags?post=69346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}