﻿
{"id":13371,"date":"2020-02-17T20:23:34","date_gmt":"2020-02-17T20:23:34","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=13371"},"modified":"2020-02-19T16:40:50","modified_gmt":"2020-02-19T16:40:50","slug":"rabbitmq-nedir-ne-amaca-hizmet-etmektedir","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/rabbitmq-nedir-ne-amaca-hizmet-etmektedir\/","title":{"rendered":"RabbitMQ Nedir? Ne Amaca Hizmet Etmektedir?"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde bir mesaj kuyruk sistemi olan RabbitMQ \u00fczerine detayl\u0131 bir irdeleme ger\u00e7ekle\u015ftirecek ve nerede ne ama\u00e7la kullanmam\u0131z gerekti\u011fine dair isti\u015faremizi edece\u011fiz.<\/p>\n<p><strong>Nedir bu RabbitMQ?<\/strong><br \/>\nOpen Source olan bir mesaj kuyruk sistemidir. Yani bir uygulamadan bir mesaj\u0131 al\u0131p bir ba\u015fka uygulamaya s\u0131ras\u0131 geldi\u011finde ileten sistemdir. Bu sistemi bir postane yahut kargo firmas\u0131 gibi d\u00fc\u015f\u00fcnebiliriz. Nas\u0131l ki bir mektup postaneye yahut bir \u00fcr\u00fcn kargoya verildi\u011finde zaman\u0131 geldimi ilgili adrese teslim edilirlerse i\u015fte ayn\u0131 i\u015flemi RabbitMQ&#8217;da ger\u00e7ekle\u015ftirmekte ve kendisine verilen mesaj\u0131 do\u011fru zamanda ilgili t\u00fcketiciye g\u00f6ndermektedir.<\/p>\n<p><strong>Peki genel \u00f6zellikleri nelerdir?<\/strong><\/p>\n<ul>\n<li>Erland diliyle geli\u015ftirilmi\u015ftir.<\/li>\n<li>Open Source&#8217;d\u00fcr. Bundan dolay\u0131 yayg\u0131nl\u0131k kazanm\u0131\u015ft\u0131r.<\/li>\n<li>Cross Platform desteklemesinden dolay\u0131 farkl\u0131 i\u015fletim sistemlerinde kurulabilir ve kullan\u0131labilir.<\/li>\n<li>\u00c7ok iyi bir d\u00f6k\u00fcmantasyonu mevcuttur. <span style=\"font-size:12px;\">bknz: <a href=\"https:\/\/www.rabbitmq.com\/getstarted.html\" rel=\"noopener noreferrer\" target=\"_blank\">https:\/\/www.rabbitmq.com\/getstarted.html<\/a><\/span><\/li>\n<li>Cloud taraf\u0131nda web aray\u00fcz sunarak kullan\u0131m kolayl\u0131\u011f\u0131 sa\u011flamaktad\u0131r.<\/li>\n<\/ul>\n<blockquote><p><em><strong>Message Broker; mesaj kuyruk sistemlerine verilen genel isimdir. RabbitMQ bunlardan sadece birtanesidir. Kafka, MSMQ vs. di\u011fer mesaj kuyruk sistemleridir.<\/strong><\/em><\/p><\/blockquote>\n<p><strong>RabbitMQ&#8217;yu neden kullanmal\u0131y\u0131z?<\/strong><br \/>\nYaz\u0131l\u0131m uygulamalar\u0131nda \u00f6l\u00e7eklendirilebilir bir ortam sa\u011flayabilmek istiyorsak e\u011fer RabbitMQ kullan\u0131lmal\u0131d\u0131r. Bunu \u015f\u00f6yle a\u00e7\u0131klayabiliriz; bir web sitemizin yahut mobil uygulamam\u0131z\u0131n oldu\u011funu d\u00fc\u015f\u00fcnelim. Kullan\u0131c\u0131dan gelen bir istek neticesinde anl\u0131k cevap veremiyorsak ya da anl\u0131k olmayan\/zaman alan i\u015flemleri devreye sokmam\u0131z gerekiyorsa kullan\u0131c\u0131y\u0131 oyalamak yerine bu tarz bir s\u00fcreci asenkron bir \u015fekilde i\u015fleyip uygulama yo\u011funlu\u011funu d\u00fc\u015f\u00fcrmemiz gerekmektedir. Aksi taktirde kullan\u0131c\u0131 gereksiz bir Response Time s\u00fcresine maruz kalacak ve yaz\u0131l\u0131m\u0131m\u0131z aleyhine bir durum s\u00f6z konusu olacakt\u0131r.<\/p>\n<p>\u0130\u015fte buradaki asenkron s\u00fcreci kontrol edecek olan yap\u0131 RabbitMQ&#8217;dur. RabbitMQ, Response Time zaman\u0131 uzun s\u00fcrebilecek operasyonlar\u0131 uygulamadan ba\u011f\u0131ms\u0131zla\u015ft\u0131rarak buradaki sorumlulu\u011fu farkl\u0131 bir uygulaman\u0131n \u00fcstlenmesini sa\u011flayacak olan bir mekanizma sunmaktad\u0131r. Bu mekanizma; uzun s\u00fcrecek\/maliyetli i\u015flemleri RabbitMQ arac\u0131l\u0131\u011f\u0131yla kuyru\u011fa g\u00f6nderecektir ve bu kuyruktaki i\u015flemler farkl\u0131 bir uygulama taraf\u0131ndan i\u015flenerek sonu\u00e7 asenkron bir \u015fekilde ana uygulamadan ba\u011f\u0131ms\u0131z elde edilecek, b\u00f6ylece ana uygulamada ki yo\u011funluk m\u00fcmk\u00fcn mertebe minimize edilmi\u015f olacakt\u0131r.<\/p>\n<p>Buna somut bir \u00f6rnek vermemiz gerekirse; bir web sitesi \u00fczerinden herhangi bir Word dosyas\u0131n\u0131 PDF format\u0131na d\u00f6n\u00fc\u015ft\u00fcrme hizmetini sa\u011flayacaksan\u0131z e\u011fer buradaki i\u015flem yo\u011funlu\u011funu web uygulamas\u0131na yapt\u0131rmaktan ka\u00e7\u0131n\u0131lmas\u0131 gerekmektedir. Yap\u0131lmas\u0131 gereken RabbitMQ arac\u0131l\u0131\u011f\u0131yla olu\u015fturulan bir kuyru\u011fa t\u00fcm de\u011ferlerin sokulmas\u0131 ve s\u00fcre\u00e7te ilgili kuyru\u011fu dinleyen farkl\u0131 bir uygulama arac\u0131l\u0131\u011f\u0131yla convert operasyonunun ger\u00e7ekle\u015ftirilmesi gerekmektedir. Haliyle ana uygulamay\u0131 gereksiz bir Response Time&#8217;a maruz b\u0131rakmadan gerekli d\u00f6n\u00fc\u015f\u00fcm operasyonu ba\u015far\u0131yla sonland\u0131r\u0131lm\u0131\u015f olacakt\u0131r.<\/p>\n<blockquote><p><em style=\"font-size:12px;\">Web yahut mobil uygulamalarda kullan\u0131c\u0131lara g\u00f6nderilecek e-postalar\u0131n response time s\u00fcrelerine maruz kalmamak i\u00e7in RabbitMQ ile kuyru\u011fa at\u0131l\u0131p farkl\u0131 bir uygulama taraf\u0131ndan i\u015flenerek g\u00f6nderilmesi maliyet a\u00e7\u0131s\u0131ndan kazand\u0131ran do\u011fru bir yakla\u015f\u0131m olacakt\u0131r.<\/em><\/p><\/blockquote>\n<h3 style=\"color:orange;\">RabbitMQ&#8217;nun \u0130\u015fleyi\u015fi<\/h3>\n<p>RabbitMQ&#8217;nun i\u015fleyi\u015fini anlayabilmek i\u00e7in a\u015fa\u011f\u0131daki g\u00f6rsel \u015femay\u0131 inceleyebilirsiniz.<br \/>\n<a id=\"rabbitmqisleyis\" href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/02\/RabbitMQ-Nedir..png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/02\/RabbitMQ-Nedir..png\" alt=\"RabbitMQ Nedir?\" width=\"684\" height=\"290\" class=\"aligncenter size-full wp-image-13381\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/02\/RabbitMQ-Nedir..png 684w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/02\/RabbitMQ-Nedir.-300x127.png 300w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/a><\/p>\n<p>\u015eemada da g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere RabbitMQ temelinde <em>Publisher<\/em> ve <em>Consumer<\/em> olmak \u00fczere iki akt\u00f6r ile birlikte <em>Exchange<\/em> ve <em>Queue<\/em> ensturmanlar\u0131 mevcuttur. Burada <em>Publisher<\/em> RabbitMQ mesaj kuyru\u011funa mesaj g\u00f6nderen yani bir ba\u015fka deyi\u015fle mesaj \u00fcreten ki\u015fidir\/uygulamad\u0131r. <em>Publisher<\/em> mesaj\u0131 publish ettikten sonra ilgili mesaj\u0131 <em>Exchange<\/em> kar\u015f\u0131layacakt\u0131r. <em>Exchange<\/em>, kendisine belirtilen route ile ilgili mesaj\u0131 kuyru\u011fa y\u00f6nlendirir. \u0130lgili mesaj\u0131n nas\u0131l kuyru\u011fa gidece\u011fi <em>Exchange<\/em> i\u00e7erisindeki routedan \u00f6\u011frenilir. Ard\u0131ndan kuyru\u011fa gelen mesajlar <em>Queue<\/em>&#8216;de s\u0131ralan\u0131r. <em>Queue<\/em> ilk giren ilk \u00e7\u0131kar mant\u0131\u011f\u0131nda(FIFO) \u00e7al\u0131\u015fan bir mekanizmaya sahiptir. Kuyruktaki mesajlar\u0131 t\u00fcketen\/alan ki\u015fi\/uygulama ise <em>Consumer<\/em>&#8216;d\u0131r. <em>Consumer<\/em> herhangi bir dille geli\u015ftirilebilir oldu\u011fundan dolay\u0131 yaz\u0131l\u0131m dilinden ba\u011f\u0131ms\u0131z bir uygulamad\u0131r. T\u00fcm bu s\u00fcre\u00e7te RabbitMQ AMQP(Advanced Message Queuing Protocol) protokol\u00fcn\u00fc kullanmakta ve ilgili protokol \u00fczerinden faaliyetlerini ger\u00e7ekle\u015ftirmektedir.<\/p>\n<p>Evet&#8230; Buraya kadar RabbitMQ&#8217;nun ne oldu\u011funa dair teorik bir temellendirmede bulunmu\u015f olduk. Bir sonraki yaz\u0131m\u0131zda RabbitMQ&#8217;nun kurulumunu ele alaca\u011f\u0131z. O halde \u015fimdilik g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde bir mesaj kuyruk sistemi olan RabbitMQ \u00fczerine detayl\u0131 bir irdeleme ger\u00e7ekle\u015ftirecek ve nerede ne ama\u00e7la kullanmam\u0131z gerekti\u011fine dair isti\u015faremizi edece\u011fiz. Nedir bu RabbitMQ? Open Source olan bir mesaj kuyruk sistemidir. Yani&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":13404,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3156],"tags":[3159,3157,3162,3163,3160,3161,3164,3158,3166,3165],"class_list":["post-13371","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rabbitmq","tag-advanced-message-queuing-protocol","tag-amqp","tag-consumer","tag-exchange","tag-message-broker","tag-publisher","tag-queue","tag-rabbitmq","tag-rabbitmq-ne-ise-yarar","tag-rabbitmq-nedir"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/13371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=13371"}],"version-history":[{"count":36,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/13371\/revisions"}],"predecessor-version":[{"id":13513,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/13371\/revisions\/13513"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/13404"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=13371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=13371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=13371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}