{"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\/no\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","title":{"rendered":"Utgivelse av MyPaint 2.0.0","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>God dag, Habr! Jeg \u00f8nsker \u00e5 dele en h\u00e5ndbok-guide med kunnskapene jeg har klart \u00e5 samle om <code>RabbitMQ<\/code> og komprimere dem til korte anbefalinger og konklusjoner. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"oglavlenie\">Innholdsfortegnelse<\/h3>\n<p><\/p>\n<ul>\n<li>RabbitMQ. Del 2. Vi g\u00e5r gjennom Exchanges<\/li>\n<li>RabbitMQ. Del 4. Hva er meldinger og rammer?<\/li>\n<li>RabbitMQ. Del 3. Vi g\u00e5r gjennom K\u00f8er og Bindinger<\/li>\n<li>RabbitMQ. Del 4. La oss se n\u00e6rmere p\u00e5 hva som er meldinger og rammer<\/li>\n<li>RabbitMQ. Del 6. Oversikt over modulene Federation og Shovel<\/li>\n<li>RabbitMQ. Del 7. Detaljert om Connection og Channel<\/li>\n<li>RabbitMQ. Del 8. RabbitMQ i .NET<\/li>\n<li>RabbitMQ. Del 9. Overv\u00e5king<\/li>\n<li>Midlertidige k\u00f8er<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"kratko-pro-amqp\">Kort om AMQP<\/h3>\n<p><\/p>\n<blockquote><p>AMQP (Advanced Message Queuing Protocol) \u2013 en \u00e5pen protokoll for meldingsoverf\u00f8ring mellom systemkomponenter. Hovedideen er at separate undersystemer (eller uavhengige applikasjoner) kan utveksle meldinger p\u00e5 en vilk\u00e5rlig m\u00e5te gjennom en AMQP-broker, som utf\u00f8rer ruting, muligens garanterer levering, distribusjon av datastreams, og abonnement p\u00e5 de n\u00f8dvendige type meldingene.<\/p><\/blockquote>\n<p>Protokoll <code>AMQP<\/code> introducerer tre begreper:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Utgivelse av MyPaint 2.0.0\" 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> (utvekslingspunkt eller utveksling) \u2013 her sendes meldingene. Utvekslingspunktet <strong>fordeler meldingen<\/strong> til en eller flere k\u00f8er. Den <strong>ruter meldingene til k\u00f8en<\/strong> basert p\u00e5 de etablerte forbindelsene (<code>binding<\/code>) mellom den og k\u00f8en<\/li>\n<li><code>k\u00f8<\/code> (k\u00f8) \u2013 en datakonstruksjon p\u00e5 disk eller i RAM, som <strong>lagrer referanser til meldinger og gir kopier av meldingene <code>forbrukere<\/code><\/strong> (til forbrukere)<\/li>\n<li><code>binding<\/code> (binding) \u2013 en regel som <strong>informerer utvekslingspunktet om hvilken av k\u00f8ene meldingene skal sendes til<\/strong><\/li>\n<\/ul>\n<p><\/p>\n<p>Protokollen fungerer p\u00e5 toppen av <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\">Kort om Erlang<\/h3>\n<p><\/p>\n<p>Kildekoden til prosjektet finnes i depotet p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\">GitHub<\/a><\/noindex>. Arkitekturen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rabbitmq\/rabbitmq-server\">RabbitMQ-server<\/a><\/noindex> er basert p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.erlang.org\/\">Erlang<\/a><\/noindex> og BEAM.<\/p>\n<p><\/p>\n<blockquote><p><code>Erlang<\/code> er utviklet av selskapet <code>Ericsson<\/code> p\u00e5 midten av 1980-tallet som et distribuert, feilbestandig sanntidssystem for applikasjoner som krever driftsikkerhet p\u00e5 99,999%. <code>Erlang<\/code> brukt i ulike industrier og moderne applikasjoner, for eksempel i <code>WhatsApp<\/code>. Du kan lese mer i artikkelen <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/276951\/\">arkitekturen til WhatsApp, som Facebook kj\u00f8pte for 19 milliarder dollar<\/a><\/noindex><\/p><\/blockquote>\n<p><\/p>\n<h3 id=\"kratko-pro-rabbitmq\">Kort om RabbitMQ<\/h3>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">RabbitMQ<\/a><\/noindex> \u2013 en meldingsbroker med \u00e5pen kildekode. Den rutet meldinger i henhold til alle de grunnleggende prinsippene for protokollen <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/AMQP\">AMQP<\/a><\/noindex> beskrevet i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.amqp.org\/resources\/download\">spesifikasjonen<\/a><\/noindex>. <code>RabbitMQ<\/code> implementerer og supplerer protokollen <code>AMQP<\/code>.<\/p>\n<p><\/p>\n<p>Hovedideen bak meldingsutvekslingsmodellen i <code>RabbitMQ<\/code> er at <code>producer<\/code> (utgiver) ikke sender meldinger direkte til k\u00f8en. I virkeligheten vet ofte ikke utgiveren engang om meldingen vil bli levert til noen k\u00f8. <\/p>\n<p><\/p>\n<p>I stedet kan utgiveren kun sende meldinger til en utveksling. P\u00e5 den ene siden f\u00e5r utvekslingen meldinger fra utgivere, og p\u00e5 den andre siden sender den dem til k\u00f8ene. Utvekslingen m\u00e5 vite n\u00f8yaktig hva den skal gj\u00f8re med den mottatte meldingen. Skal den legges til i en spesifikk k\u00f8? Skal den legges til i flere k\u00f8er? Eller skal meldingen ignoreres?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Utgivelse av MyPaint 2.0.0\" src=\"\/wp-content\/uploads\/2020\/02\/1deaebddebde216b8f706953ddf2d3c6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kort oppsummert kan arbeidet <code>RabbitMQ<\/code> beskrives som f\u00f8lger:<\/p>\n<p><\/p>\n<ol>\n<li>Utgiveren sender en melding til en spesifikk utveksling<\/li>\n<li>Utvekslingen, n\u00e5r den mottar meldingen, rutinerer den til en eller flere k\u00f8er i henhold til binderegler mellom den og k\u00f8en<\/li>\n<li>K\u00f8en lagrer en referanse til denne meldingen. Selve meldingen lagres i minnet eller p\u00e5 disk<\/li>\n<li>N\u00e5r forbrukeren er klar til \u00e5 motta meldingen fra k\u00f8en, oppretter serveren en kopi av meldingen ved hjelp av referansen og sender den<\/li>\n<li>Forbrukeren mottar meldingen og sender en bekreftelse til megleren<\/li>\n<li>Megleren, etter \u00e5 ha mottatt bekreftelsen, fjerner kopi av meldingen fra k\u00f8en. Deretter fjerner den fra minnet og fra disken<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"rpc\"><em>RPC<\/em><\/h4>\n<p><\/p>\n<p>Prosessen <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 (Remote Procedure Call)<\/a><\/noindex> ligger til grunn for praktisk talt all interaksjon med kjernen <code>RabbitMQ<\/code>. For eksempel har innledende diskusjoner om vilk\u00e5rene for klienten med <code>RabbitMQ<\/code>, demonstrerer en spesifikk prosess <code>RPC<\/code>. N\u00e5r denne sekvensen er fullf\u00f8rt, <code>RabbitMQ<\/code> vil v\u00e6re klar til \u00e5 ta imot foresp\u00f8rsel fra klienten:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Utgivelse av MyPaint 2.0.0\" src=\"\/wp-content\/uploads\/2020\/02\/059f37304f45a1f0ff625b671f6462ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ogs\u00e5 i spesifikasjonen <code>AMQP<\/code> kan b\u00e5de klient og server kalle kommandoer. Dette betyr at klienten forventer interaksjon med serveren. Kommandoer er klasser og metoder. For eksempel, <code>Connection.Start<\/code> \u2013 kaller en metode <code>Start<\/code> klassen <code>Connection<\/code>.<\/p>\n<p><\/p>\n<h4 id=\"podklyuchenie-i-kanaly\"><em>Tilslutning og kanaler<\/em><\/h4>\n<p><\/p>\n<p>For slik informasjonsutveksling mellom klienten og serveren brukes <strong>kanaler<\/strong>. Kanaler opprettes innenfor <strong>en bestemt tilslutning<\/strong>. Hver kanal er isolert fra andre kanaler. I synkrone tilfeller er det ikke mulig \u00e5 utf\u00f8re neste kommando f\u00f8r en respons er mottatt. <\/p>\n<p><\/p>\n<p>For \u00e5 kunne sende kommandoer parallelt m\u00e5 man \u00e5pne flere kanaler. Hver kanal oppretter en egen <code>Erlang<\/code> prosess. \u00c9n tilslutning kan ha mange kanaler (<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>). Hver kanal har noen strukturer og objekter i minnet. Derfor, jo flere kanaler som finnes innenfor en tilslutning, jo <strong>mer minne bruker RabbitMQ<\/strong> for \u00e5 h\u00e5ndtere slike tilkoblinger.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Utgivelse av MyPaint 2.0.0\" src=\"\/wp-content\/uploads\/2020\/02\/9bc388200f4f82eb8f98cb1dd1580675.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Et enkelt eksempel p\u00e5 opprettelse av tilkobling og kanal ved hjelp av <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>Det anbefales p\u00e5 det sterkeste ikke \u00e5 \u00e5pne en ny tilkobling for hver operasjon, da dette <strong>vil f\u00f8re til store kostnader.<\/strong>Kanaler m\u00e5 ogs\u00e5 v\u00e6re permanente, men mange protokollfeil f\u00f8rer til at kanalen lukkes, s\u00e5 levetiden til kanalen kan v\u00e6re kortere enn tilkoblingen.<\/p>\n<p><\/p>\n<h4 id=\"gde-ispolzuetsya-rabbitmq\"><em>Hvor brukes RabbitMQ?<\/em><\/h4>\n<p><\/p>\n<p>I sammenheng med mikrotjenester brukes protokollen <code>AMQP<\/code> og dens implementering i <code>RabbitMQ<\/code> ofte for <strong>asynkron kommunikasjon<\/strong> mellom tjenester.<\/p>\n<p><\/p>\n<p>I sammenheng med <code>IIOT<\/code> protokollen <code>AMQP<\/code> og dens implementering i <code>RabbitMQ<\/code> brukes for datadelings mellom servere (server-til-server). Det brukes ogs\u00e5 en plugin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/mqtt.html\">MQTT Plugin RabbitMQ<\/a><\/noindex> som er en implementering av protokollen <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/MQTT\">MQTT<\/a><\/noindex> for datatransmisjon mellom sensor og server i lavhastighetsmilj\u00f8er med h\u00f8y forsinkelse (fullstendig liste over st\u00f8ttede protokoller er oppf\u00f8rt p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/protocols.html\">prosjektets nettsted<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>I neste artikkel begynner vi \u00e5 se n\u00e6rmere p\u00e5 Exchanges.<\/p>\n<p><\/p>\n<h3 id=\"ssylki\">Lenker<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.rabbitmq.com\/\">RabbitMQ-prosjektets nettsted<\/a><\/noindex><\/li>\n<\/ul>\n<p>Kilde: <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\/no\/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=\"nn_NO\" \/>\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\/no\/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. Introduksjon. Erlang, AMQP | ProHoster","description":"God dag, Habr! Jeg \u00f8nsker \u00e5 dele en l\u00e6reguide med kunnskapene jeg har klart \u00e5 samle om RabbitMQ og komprimere dem til korte anbefalinger og konklusjoner.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/rabbitmq-chast-1-introduction-erlang-amqp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/69346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=69346"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/69346\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/69347"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=69346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=69346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=69346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}