{"id":37561,"date":"2026-01-09T11:00:40","date_gmt":"2026-01-09T08:00:40","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/"},"modified":"2026-01-09T11:00:40","modified_gmt":"2026-01-09T08:00:40","slug":"eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/","title":{"rendered":"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi"},"content":{"rendered":"<h2>EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, farkl\u0131 bile\u015fenler aras\u0131nda etkili ve esnek bir ileti\u015fim kurmak, uygulaman\u0131n performans\u0131n\u0131 ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini do\u011frudan etkileyen kritik bir unsurdur. Geleneksel y\u00f6ntemlerin getirdi\u011fi s\u0131k\u0131 ba\u011f\u0131ml\u0131l\u0131klar ve karma\u015f\u0131kl\u0131klar, \u00f6zellikle b\u00fcy\u00fck ve mod\u00fcler uygulamalarda geli\u015ftiricileri zorlayabilmektedir. \u0130\u015fte tam bu noktada EventBus, bile\u015fenler aras\u0131 ileti\u015fimi kolayla\u015ft\u0131ran, ba\u011f\u0131ml\u0131l\u0131klar\u0131 azaltan ve kodun okunabilirli\u011fini art\u0131ran g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm olarak kar\u015f\u0131m\u0131za \u00e7\u0131kmaktad\u0131r. Bu makalede EventBus kavram\u0131n\u0131, \u00e7al\u0131\u015fma prensiplerini, kullan\u0131m senaryolar\u0131n\u0131 ve en iyi pratiklerini detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>EventBus Nedir ve Neden Kullan\u0131l\u0131r?<\/h3>\n<p>EventBus, bir uygulaman\u0131n farkl\u0131 bile\u015fenleri aras\u0131nda olay tabanl\u0131 (event-driven) ileti\u015fimi sa\u011flayan bir yaz\u0131l\u0131m desenidir veya k\u00fct\u00fcphanesidir. Temel amac\u0131, bile\u015fenler aras\u0131nda do\u011frudan ba\u011f\u0131ml\u0131l\u0131k olu\u015fturmadan bilgi ak\u0131\u015f\u0131n\u0131 y\u00f6netmektir. Bu sayede bir bile\u015fen, di\u011fer bile\u015fenin varl\u0131\u011f\u0131ndan veya detaylar\u0131ndan haberdar olmak zorunda kalmadan olaylar\u0131 yay\u0131nlayabilir, di\u011fer bile\u015fenler ise bu olaylara abone olarak ilgilendikleri bilgileri alabilirler.<\/p>\n<h4>Geleneksel \u0130leti\u015fim Y\u00f6ntemlerinin Zorluklar\u0131<\/h4>\n<p>Geleneksel y\u00f6ntemlerde, \u00f6rne\u011fin bir s\u0131n\u0131f\u0131n ba\u015fka bir s\u0131n\u0131ftaki metodu do\u011frudan \u00e7a\u011f\u0131rmas\u0131 veya bir aray\u00fcz (interface) \u00fczerinden ileti\u015fim kurmas\u0131, s\u0131n\u0131flar aras\u0131nda s\u0131k\u0131 bir ba\u011f\u0131ml\u0131l\u0131k (tight coupling) yarat\u0131r. Bu durum, bir bile\u015fende yap\u0131lan de\u011fi\u015fikli\u011fin di\u011fer ba\u011f\u0131ml\u0131 bile\u015fenleri de etkilemesine, kodun yeniden kullan\u0131labilirli\u011finin azalmas\u0131na ve test s\u00fcre\u00e7lerinin karma\u015f\u0131kla\u015fmas\u0131na neden olabilir. \u00d6zellikle Android gibi ya\u015fam d\u00f6ng\u00fcs\u00fc olan platformlarda, bu ba\u011f\u0131ml\u0131l\u0131klar bellek s\u0131z\u0131nt\u0131lar\u0131 (memory leaks) gibi sorunlara yol a\u00e7abilir.<\/p>\n<h4>EventBus&#8217;\u0131n \u00c7\u00f6z\u00fcm Yakla\u015f\u0131m\u0131<\/h4>\n<p>EventBus, Yay\u0131nc\u0131-Abone (Publisher-Subscriber) desenini uygulayarak bu zorluklara bir \u00e7\u00f6z\u00fcm sunar. Bir bile\u015fen (yay\u0131nc\u0131), belirli bir olay\u0131n ger\u00e7ekle\u015fti\u011fini EventBus&#8217;a bildirir. Bu olaya abone olan di\u011fer bile\u015fenler (aboneler) ise, olay\u0131n kendilerine iletilmesiyle ilgili eylemleri ger\u00e7ekle\u015ftirir. Yay\u0131nc\u0131 ve abone, birbirleri hakk\u0131nda do\u011frudan bilgi sahibi olmak zorunda de\u011fildir; aradaki ileti\u015fimi EventBus y\u00f6netir. Bu, bile\u015fenler aras\u0131nda gev\u015fek ba\u011f\u0131ml\u0131l\u0131k (loose coupling) sa\u011flar.<\/p>\n<h4>Uygulama Mimarisine Katk\u0131lar\u0131<\/h4>\n<p>EventBus kullan\u0131m\u0131, uygulaman\u0131n mimarisini daha mod\u00fcler ve esnek hale getirir. Her bile\u015fen kendi sorumlulu\u011funu daha net bir \u015fekilde yerine getirir ve di\u011fer bile\u015fenlerle olan etkile\u015fimi olaylar \u00fczerinden soyutlan\u0131r. Bu durum, kodun daha temiz, daha anla\u015f\u0131l\u0131r ve daha kolay s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, yeni \u00f6zelliklerin eklenmesi veya mevcut \u00f6zelliklerin de\u011fi\u015ftirilmesi gerekti\u011finde, uygulaman\u0131n di\u011fer k\u0131s\u0131mlar\u0131n\u0131 minimum d\u00fczeyde etkileyerek de\u011fi\u015fiklik yapma imkan\u0131 sunar.<\/p>\n<h3>EventBus&#8217;\u0131n Temel Bile\u015fenleri<\/h3>\n<p>EventBus mekanizmas\u0131, d\u00f6rt ana bile\u015fen etraf\u0131nda \u015fekillenir:<\/p>\n<h4>Olaylar (Events)<\/h4>\n<p>Olaylar, bir uygulaman\u0131n i\u00e7inde ger\u00e7ekle\u015fen ve di\u011fer bile\u015fenlere bildirilmesi gereken herhangi bir durumu veya veriyi temsil eden basit Java (veya ilgili dil) nesneleridir. Genellikle POJO (Plain Old Java Object) olarak tan\u0131mlan\u0131rlar ve herhangi bir \u00f6zel aray\u00fcz\u00fc uygulamalar\u0131 veya belirli bir s\u0131n\u0131f\u0131 miras almalar\u0131 gerekmez. Olay nesneleri, ilgili veriyi ta\u015f\u0131mak i\u00e7in alanlara (fields) sahip olabilirler.<\/p>\n<pre><code class=\"language-java\">\n\/\/ \u00d6rnek bir olay s\u0131n\u0131f\u0131\npublic class MessageEvent {\n    public final String message;\n\n    public MessageEvent(String message) {\n        this.message = message;\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Yay\u0131nc\u0131lar (Publishers\/Producers)<\/h4>\n<p>Yay\u0131nc\u0131lar, belirli bir olay\u0131n ger\u00e7ekle\u015fti\u011fini EventBus'a bildiren bile\u015fenlerdir. Genellikle, bir i\u015flem tamamland\u0131\u011f\u0131nda, bir kullan\u0131c\u0131 eylemi ger\u00e7ekle\u015fti\u011finde veya bir veri g\u00fcncellendi\u011finde ilgili olay\u0131 olu\u015fturur ve EventBus'a \"g\u00f6nderirler\" (post ederler). Yay\u0131nc\u0131lar, olaya kimin abone oldu\u011fundan veya olay\u0131n nas\u0131l i\u015flenece\u011finden habersizdirler.<\/p>\n<h4>Abone Olanlar (Subscribers\/Consumers)<\/h4>\n<p>Aboneler, belirli olaylarla ilgilenen ve bu olaylar EventBus'a g\u00f6nderildi\u011finde bildirim alan bile\u015fenlerdir. Bir abone, EventBus'a kendisini kaydeder ve belirli olay tiplerini dinlemek istedi\u011fini belirtir. Olay ger\u00e7ekle\u015fti\u011finde, EventBus ilgili abonenin olay i\u015fleme metodunu \u00e7a\u011f\u0131r\u0131r. Aboneler, hangi yay\u0131nc\u0131n\u0131n olay\u0131 g\u00f6nderdi\u011fini bilmek zorunda de\u011fildir.<\/p>\n<h4>EventBus Mekanizmas\u0131<\/h4>\n<p>EventBus'\u0131n kendisi, yay\u0131nc\u0131lar ile aboneler aras\u0131ndaki k\u00f6pr\u00fcy\u00fc kuran merkezi bir yap\u0131d\u0131r. Olaylar\u0131 al\u0131r, abone listesini y\u00f6netir ve gelen olaylar\u0131 ilgili abonelere da\u011f\u0131t\u0131r. \u00c7o\u011fu EventBus k\u00fct\u00fcphanesi, olaylar\u0131 farkl\u0131 i\u015f par\u00e7ac\u0131klar\u0131nda (threads) i\u015fleme yetene\u011fi gibi geli\u015fmi\u015f \u00f6zellikler sunar.<\/p>\n<h3>EventBus Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>EventBus'\u0131n \u00e7al\u0131\u015fma prensibi \u00fc\u00e7 temel ad\u0131mdan olu\u015fur:<\/p>\n<h4>Olay Kayd\u0131 (Event Registration)<\/h4>\n<p>Bir bile\u015fenin olaylar\u0131 dinleyebilmesi i\u00e7in \u00f6ncelikle EventBus'a kendisini kaydetmesi gerekir. Bu kay\u0131t i\u015flemi genellikle abonenin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn ba\u015f\u0131nda (\u00f6rne\u011fin Android'de Activity'nin <code>onCreate()<\/code> veya <code>onStart()<\/code> metodunda) yap\u0131l\u0131r. Kay\u0131t s\u0131ras\u0131nda abone, hangi olay tiplerini dinlemek istedi\u011fini belirtir. Her abone, belirli bir olay tipi i\u00e7in bir veya daha fazla olay i\u015fleme metoduna sahip olabilir.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Abone kayd\u0131\nEventBus.getDefault().register(this);\n<\/pre>\n<p><\/code><\/p>\n<h4>Olay Yay\u0131nlama (Event Posting)<\/h4>\n<p>Bir olay ger\u00e7ekle\u015fti\u011finde, yay\u0131nc\u0131 ilgili olay nesnesini olu\u015fturur ve EventBus'\u0131n <code>post()<\/code> metodunu \u00e7a\u011f\u0131rarak olay\u0131 yay\u0131nlar. EventBus, bu olay\u0131 al\u0131r ve kay\u0131tl\u0131 aboneler aras\u0131nda bu olay\u0131 dinleyenleri bulur.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Olay yay\u0131nlama\nEventBus.getDefault().post(new MessageEvent(\"Merhaba EventBus!\"));\n<\/pre>\n<p><\/code><\/p>\n<h4>Olay \u0130\u015fleme (Event Handling)<\/h4>\n<p>EventBus, yay\u0131nlanan olay\u0131 ald\u0131ktan sonra, bu olaya abone olmu\u015f t\u00fcm bile\u015fenlerin ilgili olay i\u015fleme metotlar\u0131n\u0131 \u00e7a\u011f\u0131r\u0131r. Olay i\u015fleme metotlar\u0131 genellikle \u00f6zel bir anotasyon (\u00f6rne\u011fin <code>@Subscribe<\/code>) ile i\u015faretlenir ve parametre olarak i\u015flenecek olay nesnesini al\u0131r. K\u00fct\u00fcphaneye ba\u011fl\u0131 olarak, olaylar\u0131n hangi i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flenece\u011fi de bu metotlarda belirtilebilir.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Olay i\u015fleme metodu\n@Subscribe(threadMode = ThreadMode.MAIN)\npublic void onMessageEvent(MessageEvent event) {\n    \/\/ UI g\u00fcncellemesi yapabiliriz\n    textView.setText(event.message);\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>\u0130\u015f Par\u00e7ac\u0131\u011f\u0131 Y\u00f6netimi (Thread Management)<\/h4>\n<p>Bir\u00e7ok EventBus k\u00fct\u00fcphanesi, olaylar\u0131n hangi i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flenece\u011fini kontrol etme imkan\u0131 sunar. Bu, \u00f6zellikle UI g\u00fcncellemeleri gibi ana i\u015f par\u00e7ac\u0131\u011f\u0131nda yap\u0131lmas\u0131 gereken i\u015flemler i\u00e7in kritik \u00f6neme sahiptir. Yayg\u0131n i\u015f par\u00e7ac\u0131\u011f\u0131 modlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>POSTING:<\/strong> Olay, yay\u0131nland\u0131\u011f\u0131 i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flenir.<\/li>\n<li><strong>MAIN:<\/strong> Olay, Android'in ana (UI) i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flenir.<\/li>\n<li><strong>BACKGROUND:<\/strong> Olay, bir arka plan i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flenir. E\u011fer yay\u0131nc\u0131 ana i\u015f par\u00e7ac\u0131\u011f\u0131nda ise yeni bir arka plan i\u015f par\u00e7ac\u0131\u011f\u0131 olu\u015fturulur; aksi takdirde yay\u0131nc\u0131n\u0131n i\u015f par\u00e7ac\u0131\u011f\u0131 kullan\u0131l\u0131r.<\/li>\n<li><strong>ASYNC:<\/strong> Olay, her zaman ayr\u0131 bir arka plan i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flenir.<\/li>\n<\/ul>\n<h3>EventBus Kullan\u0131m Senaryolar\u0131<\/h3>\n<p>EventBus, \u00e7e\u015fitli uygulama senaryolar\u0131nda etkili bir \u015fekilde kullan\u0131labilir:<\/p>\n<h4>UI G\u00fcncellemeleri<\/h4>\n<p>Arka plan i\u015flemlerinden (\u00f6rne\u011fin a\u011f istekleri, veritaban\u0131 i\u015flemleri) gelen sonu\u00e7lar\u0131 ana (UI) i\u015f par\u00e7ac\u0131\u011f\u0131na g\u00fcvenli bir \u015fekilde iletmek i\u00e7in idealdir. Arka planda bir i\u015flem tamamland\u0131\u011f\u0131nda bir olay yay\u0131nlan\u0131r ve UI bile\u015fenleri bu olay\u0131 dinleyerek ekran\u0131 g\u00fcnceller.<\/p>\n<h4>Arka Plan \u0130\u015flemleri ve Sonu\u00e7lar\u0131<\/h4>\n<p>Bir servisin veya ba\u015fka bir arka plan g\u00f6revinin tamamland\u0131\u011f\u0131n\u0131 veya ilerlemesini bildirmek i\u00e7in kullan\u0131l\u0131r. Bu, uygulaman\u0131n farkl\u0131 katmanlar\u0131 aras\u0131nda temiz bir ayr\u0131m sa\u011flar.<\/p>\n<h4>Mod\u00fcller Aras\u0131 \u0130leti\u015fim<\/h4>\n<p>B\u00fcy\u00fck ve mod\u00fcler uygulamalarda, farkl\u0131 mod\u00fcllerin birbirleriyle do\u011frudan ba\u011f\u0131ml\u0131l\u0131k kurmadan ileti\u015fim kurmas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, bir kullan\u0131c\u0131 mod\u00fcl\u00fc giri\u015f yapt\u0131\u011f\u0131nda, di\u011fer mod\u00fcller bu olay\u0131 dinleyerek kendi i\u015flemlerini ba\u015flatabilir.<\/p>\n<h4>Hata Y\u00f6netimi<\/h4>\n<p>Uygulaman\u0131n herhangi bir yerinde meydana gelen bir hatay\u0131 merkezi bir hata i\u015fleyiciye iletmek i\u00e7in kullan\u0131labilir. B\u00f6ylece hatalar tek bir noktadan y\u00f6netilebilir ve loglanabilir.<\/p>\n<h3>EventBus'\u0131n Avantajlar\u0131 ve Dezavantajlar\u0131<\/h3>\n<p>Her teknoloji gibi EventBus'\u0131n da kendine \u00f6zg\u00fc avantajlar\u0131 ve dezavantajlar\u0131 bulunmaktad\u0131r:<\/p>\n<h4>Avantajlar\u0131<\/h4>\n<ul>\n<li><strong>Ayr\u0131kla\u015ft\u0131rma (Decoupling):<\/strong> Bile\u015fenler aras\u0131nda do\u011frudan ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ortadan kald\u0131rarak gev\u015fek ba\u011f\u0131ml\u0131l\u0131k sa\u011flar. Bu, kodun daha mod\u00fcler ve esnek olmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Kod Sadele\u015fmesi:<\/strong> Callback aray\u00fczleri veya broadcast receiver'lar gibi daha karma\u015f\u0131k ileti\u015fim y\u00f6ntemlerine k\u0131yasla daha az ve daha temiz kod yaz\u0131lmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Test Edilebilirlik:<\/strong> Bile\u015fenler ba\u011f\u0131ms\u0131z hale geldi\u011fi i\u00e7in, her bir bile\u015fenin izole bir \u015fekilde test edilmesi kolayla\u015f\u0131r.<\/li>\n<li><strong>Bak\u0131m Kolayl\u0131\u011f\u0131:<\/strong> Uygulaman\u0131n farkl\u0131 k\u0131s\u0131mlar\u0131n\u0131 de\u011fi\u015ftirmek veya geni\u015fletmek daha kolay hale gelir, \u00e7\u00fcnk\u00fc de\u011fi\u015fiklikler di\u011fer bile\u015fenleri daha az etkiler.<\/li>\n<li><strong>Ya\u015fam D\u00f6ng\u00fcs\u00fc Y\u00f6netimi:<\/strong> \u00d6zellikle Android'de, abonelerin ya\u015fam d\u00f6ng\u00fcs\u00fcne uygun olarak kaydedilmesi ve kayd\u0131n\u0131n silinmesi, bellek s\u0131z\u0131nt\u0131lar\u0131n\u0131n \u00f6n\u00fcne ge\u00e7meye yard\u0131mc\u0131 olur.<\/li>\n<\/ul>\n<h4>Dezavantajlar\u0131<\/h4>\n<ul>\n<li><strong>Debug Zorlu\u011fu:<\/strong> Olay ak\u0131\u015f\u0131n\u0131 takip etmek, \u00f6zellikle \u00e7ok say\u0131da olay ve abone oldu\u011funda zor olabilir. Hangi olay\u0131n nereden geldi\u011fini ve kimin taraf\u0131ndan i\u015flendi\u011fini anlamak bazen karma\u015f\u0131kla\u015fabilir.<\/li>\n<li><strong>Performans Endi\u015feleri:<\/strong> \u00c7ok s\u0131k olay yay\u0131nlamak veya \u00e7ok say\u0131da aboneye sahip olmak, performans \u00fczerinde k\u00fc\u00e7\u00fck bir etkiye sahip olabilir, ancak modern EventBus k\u00fct\u00fcphaneleri genellikle optimize edilmi\u015ftir.<\/li>\n<li><strong>A\u015f\u0131r\u0131 Kullan\u0131m Riski:<\/strong> Her ileti\u015fim i\u00e7in EventBus kullanmak, uygulaman\u0131n olay ak\u0131\u015f\u0131n\u0131 anla\u015f\u0131lmaz hale getirebilir ve \"event spaghetti\" (olay spagettisi) durumuna yol a\u00e7abilir.<\/li>\n<li><strong>Tip G\u00fcvenli\u011fi (Type Safety):<\/strong> Baz\u0131 EventBus uygulamalar\u0131, olaylar\u0131n tip g\u00fcvenli\u011fini sa\u011flamak i\u00e7in daha az kat\u0131 kurallara sahip olabilir, bu da \u00e7al\u0131\u015fma zaman\u0131 hatalar\u0131na yol a\u00e7abilir.<\/li>\n<\/ul>\n<h3>Pop\u00fcler EventBus K\u00fct\u00fcphaneleri ve \u00d6rnekleri<\/h3>\n<p>Piyasada bir\u00e7ok EventBus k\u00fct\u00fcphanesi bulunmaktad\u0131r. \u0130\u015fte en pop\u00fclerlerinden baz\u0131lar\u0131:<\/p>\n<h4>GreenRobot EventBus (Android Odakl\u0131)<\/h4>\n<p>Android uygulamalar\u0131nda en yayg\u0131n kullan\u0131lan EventBus k\u00fct\u00fcphanelerinden biridir. Hafif, h\u0131zl\u0131 ve kullan\u0131m\u0131 kolayd\u0131r. \u0130\u015f par\u00e7ac\u0131\u011f\u0131 y\u00f6netimi ve sticky events gibi geli\u015fmi\u015f \u00f6zellikler sunar.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Ba\u011f\u0131ml\u0131l\u0131k (build.gradle)\n\/\/ implementation 'org.greenrobot:eventbus:3.3.1'\n\n\/\/ 1. Olay s\u0131n\u0131f\u0131\npublic class UserLoggedInEvent {\n    public final String username;\n    public UserLoggedInEvent(String username) {\n        this.username = username;\n    }\n}\n\n\/\/ 2. Abone s\u0131n\u0131f\u0131 (\u00f6rne\u011fin bir Activity)\npublic class MainActivity extends AppCompatActivity {\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n        \/\/ EventBus'a kaydol\n        EventBus.getDefault().register(this);\n    }\n\n    @Override\n    protected void onDestroy() {\n        super.onDestroy();\n        \/\/ EventBus'tan kayd\u0131 sil\n        EventBus.getDefault().unregister(this);\n    }\n\n    \/\/ 3. Olay i\u015fleme metodu\n    @Subscribe(threadMode = ThreadMode.MAIN)\n    public void onUserLoggedIn(UserLoggedInEvent event) {\n        Toast.makeText(this, \"Ho\u015f geldin, \" + event.username, Toast.LENGTH_SHORT).show();\n        \/\/ UI g\u00fcncellemeleri burada yap\u0131labilir\n    }\n\n    \/\/ Bir butona t\u0131klama ile olay yay\u0131nlama\n    public void loginButton_onClick(View view) {\n        \/\/ Bir kullan\u0131c\u0131 giri\u015f yapt\u0131ktan sonra olay yay\u0131nla\n        EventBus.getDefault().post(new UserLoggedInEvent(\"Ali Veli\"));\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Guava EventBus (Java Genel)<\/h4>\n<p>Google'\u0131n Guava k\u00fct\u00fcphanesinin bir par\u00e7as\u0131d\u0131r ve genel Java uygulamalar\u0131nda kullan\u0131labilir. Reflection tabanl\u0131d\u0131r ve daha \u00e7ok sunucu taraf\u0131 uygulamalar veya masa\u00fcst\u00fc uygulamalar\u0131 i\u00e7in tercih edilebilir.<\/p>\n<h4>RxBus (RxJava Tabanl\u0131)<\/h4>\n<p>RxJava'n\u0131n g\u00fcc\u00fcn\u00fc kullanarak olay tabanl\u0131 ileti\u015fimi sa\u011flayan bir desendir. Do\u011frudan bir k\u00fct\u00fcphane olmaktan \u00e7ok, RxJava'n\u0131n <code>PublishSubject<\/code> veya <code>BehaviorSubject<\/code> gibi operat\u00f6rleri kullan\u0131larak olu\u015fturulan bir implementasyondur. Ak\u0131\u015f kontrol\u00fc, hata i\u015fleme ve i\u015f par\u00e7ac\u0131\u011f\u0131 y\u00f6netimi gibi RxJava \u00f6zelliklerinden faydalan\u0131r.<\/p>\n<h3>EventBus Kullan\u0131m\u0131nda Dikkat Edilmesi Gerekenler ve En \u0130yi Pratikler<\/h3>\n<p>EventBus'\u0131n avantajlar\u0131ndan tam olarak yararlanmak ve olas\u0131 dezavantajlar\u0131n\u0131 minimize etmek i\u00e7in baz\u0131 en iyi pratikleri uygulamak \u00f6nemlidir:<\/p>\n<h4>Olay Tan\u0131mlar\u0131n\u0131n Netli\u011fi<\/h4>\n<p>Olay s\u0131n\u0131flar\u0131n\u0131 m\u00fcmk\u00fcn oldu\u011funca spesifik ve anlaml\u0131 bir \u015fekilde adland\u0131r\u0131n. Olay\u0131n neyi temsil etti\u011fini ve hangi veriyi ta\u015f\u0131d\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a belirtin. \u00d6rne\u011fin, <code>UserLoggedInEvent<\/code> yerine sadece <code>Event<\/code> demek karma\u015f\u0131kl\u0131\u011f\u0131 art\u0131r\u0131r.<\/p>\n<h4>Aboneliklerin Y\u00f6netimi (Ya\u015fam D\u00f6ng\u00fcs\u00fc)<\/h4>\n<p>Abonelerinizi do\u011fru zamanda kaydetmeyi (register) ve kayd\u0131n\u0131 silmeyi (unregister) unutmay\u0131n. \u00d6zellikle Android'de, bir Activity veya Fragment'\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcne uygun olarak <code>onStart()\/onStop()<\/code> veya <code>onCreate()\/onDestroy()<\/code> metotlar\u0131nda bu i\u015flemleri yapmak, bellek s\u0131z\u0131nt\u0131lar\u0131n\u0131 ve istenmeyen davran\u0131\u015flar\u0131 \u00f6nler.<\/p>\n<pre><code class=\"language-java\">\n\/\/ Do\u011fru kullan\u0131m \u00f6rne\u011fi:\n@Override\nprotected void onStart() {\n    super.onStart();\n    EventBus.getDefault().register(this);\n}\n\n@Override\nprotected void onStop() {\n    super.onStop();\n    EventBus.getDefault().unregister(this);\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Hata Y\u00f6netimi ve \u0130stisnalar<\/h4>\n<p>Olay i\u015fleme metotlar\u0131nda meydana gelebilecek hatalar\u0131 uygun \u015fekilde ele al\u0131n. Baz\u0131 EventBus k\u00fct\u00fcphaneleri, i\u015fleme s\u0131ras\u0131nda olu\u015fan istisnalar\u0131 yakalamak i\u00e7in \u00f6zel mekanizmalar sunar. Aksi takdirde, bir abonenin hatas\u0131 di\u011fer abonelerin olaylar\u0131 i\u015flemesini engelleyebilir veya uygulaman\u0131n \u00e7\u00f6kmesine neden olabilir.<\/p>\n<h4>Performans Optimizasyonu<\/h4>\n<p>Gereksiz yere \u00e7ok s\u0131k veya \u00e7ok b\u00fcy\u00fck olaylar yay\u0131nlamaktan ka\u00e7\u0131n\u0131n. Her olay\u0131n i\u015flenmesi bir miktar kaynak t\u00fcketir. \u00d6zellikle performans kritik senaryolarda, olaylar\u0131 birle\u015ftirmeyi (batching) veya daha az s\u0131kl\u0131kta yay\u0131nlamay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h4>EventBus'\u0131 Ne Zaman Kullanmamal\u0131?<\/h4>\n<p>EventBus g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, her ileti\u015fim ihtiyac\u0131 i\u00e7in uygun de\u011fildir. Do\u011frudan ve s\u0131k\u0131 bir ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n beklenen veya tercih edildi\u011fi durumlarda (\u00f6rne\u011fin, bir s\u0131n\u0131f\u0131n kendi yard\u0131mc\u0131 metodunu \u00e7a\u011f\u0131rmas\u0131), EventBus kullanmak gereksiz karma\u015f\u0131kl\u0131k yaratabilir. Ayr\u0131ca, uygulaman\u0131n genel veri ak\u0131\u015f\u0131n\u0131 anlamay\u0131 zorla\u015ft\u0131racak \u015fekilde a\u015f\u0131r\u0131 kullanmaktan ka\u00e7\u0131n\u0131n. K\u00fc\u00e7\u00fck ve basit ileti\u015fimler i\u00e7in do\u011frudan metot \u00e7a\u011fr\u0131lar\u0131 veya callback'ler daha uygun olabilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>EventBus, modern uygulamalarda bile\u015fenler aras\u0131 ileti\u015fimi basitle\u015ftiren, ba\u011f\u0131ml\u0131l\u0131klar\u0131 azaltan ve kodun genel kalitesini art\u0131ran g\u00fc\u00e7l\u00fc bir desendir. Gev\u015fek ba\u011f\u0131ml\u0131l\u0131k, mod\u00fclerlik ve test edilebilirli\u011fi destekleyerek geli\u015ftiricilere \u00f6nemli avantajlar sunar. GreenRobot EventBus gibi pop\u00fcler k\u00fct\u00fcphaneler, bu deseni uygulamay\u0131 son derece kolayla\u015ft\u0131r\u0131r. Ancak, EventBus'\u0131 etkili bir \u015fekilde kullanmak i\u00e7in do\u011fru senaryolarda uygulamak, olay tan\u0131mlar\u0131n\u0131 net tutmak ve aboneliklerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc do\u011fru y\u00f6netmek kritik \u00f6neme sahiptir. Bilin\u00e7li ve \u00f6l\u00e7\u00fcl\u00fc kullan\u0131ld\u0131\u011f\u0131nda EventBus, uygulaman\u0131z\u0131n mimarisini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirebilir ve geli\u015ftirme s\u00fcrecinizi h\u0131zland\u0131rabilir.<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<h4>EventBus thread-safe mi?<\/h4>\n<p>Evet, \u00e7o\u011fu pop\u00fcler EventBus k\u00fct\u00fcphanesi (\u00f6rne\u011fin GreenRobot EventBus), dahili olarak thread-safe olacak \u015fekilde tasarlanm\u0131\u015ft\u0131r. Olaylar\u0131 farkl\u0131 i\u015f par\u00e7ac\u0131klar\u0131ndan yay\u0131nlayabilir ve farkl\u0131 i\u015f par\u00e7ac\u0131klar\u0131nda i\u015fleyebilirsiniz. \u0130\u015f par\u00e7ac\u0131\u011f\u0131 y\u00f6netimi (<code>ThreadMode<\/code>) sayesinde, olaylar\u0131n hangi i\u015f par\u00e7ac\u0131\u011f\u0131nda i\u015flenece\u011fini kontrol edebilirsiniz.<\/p>\n<h4>EventBus yerine Observer pattern kullanabilir miyim?<\/h4>\n<p>EventBus, asl\u0131nda Observer (G\u00f6zlemci) deseninin bir implementasyonudur, ancak daha merkezi ve genel bir yakla\u015f\u0131mla. Observer deseni genellikle do\u011frudan bir g\u00f6zlemci listesi tutan bir \"konu\" (subject) ile \u00e7al\u0131\u015f\u0131rken, EventBus olaylar\u0131 merkezi bir arac\u0131 (bus) arac\u0131l\u0131\u011f\u0131yla da\u011f\u0131t\u0131r. EventBus, daha az boilerplate kod gerektirir ve bile\u015fenler aras\u0131nda daha gev\u015fek ba\u011f\u0131ml\u0131l\u0131k sa\u011flar.<\/p>\n<h4>EventBus performans sorunlar\u0131na yol a\u00e7ar m\u0131?<\/h4>\n<p>Genel olarak, modern EventBus k\u00fct\u00fcphaneleri olduk\u00e7a optimize edilmi\u015ftir ve \u00e7o\u011fu durumda performans sorunu yaratmazlar. Ancak, \u00e7ok s\u0131k olay yay\u0131nlamak, \u00e7ok say\u0131da aboneye sahip olmak veya olay nesnelerinin \u00e7ok b\u00fcy\u00fck olmas\u0131 durumunda, k\u00fc\u00e7\u00fck performans etkileri g\u00f6r\u00fclebilir. \u00c7o\u011fu uygulama i\u00e7in bu etkiler ihmal edilebilir d\u00fczeydedir.<\/p>\n<h4>Sticky events nedir?<\/h4>\n<p>Sticky events (yap\u0131\u015fkan olaylar), EventBus'a yay\u0131nland\u0131ktan sonra orada \"yap\u0131\u015f\u0131p kalan\" olaylard\u0131r. Bir abone, olay yay\u0131nland\u0131ktan sonra EventBus'a kaydoldu\u011funda bile, en son yay\u0131nlanan sticky olay\u0131 an\u0131nda al\u0131r. Bu, \u00f6zellikle bir durumun en son halini yeni kaydolan abonelere iletmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r (\u00f6rne\u011fin, bir kullan\u0131c\u0131n\u0131n giri\u015f yapma durumu). Sticky olaylar\u0131 kullan\u0131rken, gereksiz bellek t\u00fcketimini \u00f6nlemek i\u00e7in i\u015flendikten sonra EventBus'tan kald\u0131rmay\u0131 unutmay\u0131n.<\/p>\n<h4>EventBus'\u0131 ne zaman kullanmamal\u0131y\u0131m?<\/h4>\n<p>EventBus'\u0131 her t\u00fcrl\u00fc ileti\u015fim i\u00e7in kullanmak, kodun karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 art\u0131rabilir ve debug etmeyi zorla\u015ft\u0131rabilir. \u00d6zellikle a\u015fa\u011f\u0131daki durumlarda alternatifleri de\u011ferlendirmek daha iyi olabilir:<\/p>\n<ul>\n<li>Do\u011frudan ve s\u0131k\u0131 bir ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n do\u011fal ve beklenen oldu\u011fu durumlar.<\/li>\n<li>\u0130leti\u015fimin \u00e7ok basit oldu\u011fu ve do\u011frudan metot \u00e7a\u011fr\u0131lar\u0131n\u0131n yeterli oldu\u011fu durumlar.<\/li>\n<li>Uygulama genelinde olay ak\u0131\u015f\u0131n\u0131n anla\u015f\u0131lmas\u0131n\u0131n zorla\u015faca\u011f\u0131 \"event spaghetti\" riskinin oldu\u011fu durumlar.<\/li>\n<li>Sadece iki bile\u015fen aras\u0131nda birebir ileti\u015fim gerektiren durumlar (callback veya aray\u00fczler daha uygun olabilir).<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"EventBus, bir uygulaman\u0131n farkl\u0131 bile\u015fenleri aras\u0131nda olay tabanl\u0131 (event-driven) ileti\u015fimi sa\u011flayan bir yaz\u0131l\u0131m desenidir veya k\u00fct\u00fcphanesidir. Te&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-37561","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi\" \/>\n<meta property=\"og:description\" content=\"EventBus, bir uygulaman\u0131n farkl\u0131 bile\u015fenleri aras\u0131nda olay tabanl\u0131 (event-driven) ileti\u015fimi sa\u011flayan bir yaz\u0131l\u0131m desenidir veya k\u00fct\u00fcphanesidir. Te...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T08:00:40+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi\",\"datePublished\":\"2026-01-09T08:00:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/\"},\"wordCount\":2645,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/\",\"name\":\"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-09T08:00:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi","og_description":"EventBus, bir uygulaman\u0131n farkl\u0131 bile\u015fenleri aras\u0131nda olay tabanl\u0131 (event-driven) ileti\u015fimi sa\u011flayan bir yaz\u0131l\u0131m desenidir veya k\u00fct\u00fcphanesidir. Te...","og_url":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-09T08:00:40+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"14 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi","datePublished":"2026-01-09T08:00:40+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/"},"wordCount":2645,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/","name":"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-09T08:00:40+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/eventbus-nedir-modern-uygulamalarda-olay-tabanli-iletisim-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"EventBus Nedir? Modern Uygulamalarda Olay Tabanl\u0131 \u0130leti\u015fim Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37561"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37561\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}