Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cnahmetcn/rabbitmqfanoutexchange
RabbitMQ Fanout Exchange Project (RabbitMQ Fanout Exchange Projesi)
https://github.com/cnahmetcn/rabbitmqfanoutexchange
c-sharp fanoutexchange rabbit-mq rabbitmq rabbitmq-exchange
Last synced: 8 days ago
JSON representation
RabbitMQ Fanout Exchange Project (RabbitMQ Fanout Exchange Projesi)
- Host: GitHub
- URL: https://github.com/cnahmetcn/rabbitmqfanoutexchange
- Owner: cnahmetcn
- Created: 2021-05-18T17:18:39.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-05-18T17:19:42.000Z (over 3 years ago)
- Last Synced: 2024-11-06T15:50:38.406Z (about 2 months ago)
- Topics: c-sharp, fanoutexchange, rabbit-mq, rabbitmq, rabbitmq-exchange
- Language: C#
- Homepage:
- Size: 743 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# RabbitMQ
## RabbitMQ Nedir?
- RabbitMQ, mesaj kuyruk sistemidir. Yani gönderici elindeki veriyi RabbitMQ'ya gönderir ve RabbitMQ da sırası ve yeri geldiğinde ilgili alıcıya bu veriyi iletir.
- Erland diliyle yazılmıştır.
- Open Source dur.
- AMQP protokolünü kullanır.
- **Message Broker**, mesaj kuyruk sistemlerine verilen genel bir isimdir. RabbitMQ dışında Azure Queue Storage, Azure Service Bus, Kafka ve MSMQ gibi message broker lar da vardır.## RabbitMQ Nasıl Çalışır?
![alt text](http://url/to/img.png)
- RabbitMQ içirisinde kuyruklar (**queue**) bulunmaktadır. Bu kuyruklar (**queue**) gelen mesajları taşıyan yapılardır. Kuyruğa ilk giren mesaj ilk çıkan olur.
- RabbitMQ ya mesajları gönderen bir publisher var. Bu **publisher** herhangi bir uygulama olabilir. Node, JS, JAVA, mobil ...
- **Publisher** elindeki mesajı direkt olarak kuyruğa da gönderebilir ya da gelişmiş bir yöntem olan **Exchange** e gönderir. Bir mesaj eğer **exchange** e geliyorsa, **exchange** gelen mesaj ilgili kuyuruklara routelama görevini yapar. Yani bir mesajı bir kuyruğa da gönderebilir, birden fazla kuyryğa da. Eğer **exchange** in routelayacağı herhangi bir kuyruk yoksa ilgili mesaj havada kalır, hiçbir şekilde bir kuyrukta tutulmadığından dolayı boşa gitmiş olur.
- **Subscriber** ise RabbitMQ da sadece ilgili kuyruğu dinleyen uygulamadır. **Subscriber** da **Publisher** gibi herhangi bir uygulama olabilir. **Subscriber** lar bazen iki kuyruğuda dinleyebilir, bazen tek kuyruğu dinleyebilir, bazen de tek kuyruğu üç tane **Subscriber** da dinleyebilir.## RabbitMQ Niçin Kullanılmalıdır?
- Request-Response süresini azaltmak için kullanılır. Herhangi bir uygulama için; resim ölçekleme, dosya formatı değiştirme... gibi uzun sürecek işlemleri RabbitMQ sayesinde ayrı bir senaryoda gerçekleştirebiliriz. Bu sayede kullanıcıyı bekletmez ve işlem arka planda yürütülür.
- Microservice mimarilerde asenkron iletişim sağlamak için kullanılır. Bir microservice in diğer bir microservice ile haberleşmesi ya senkron yada asenkron olabilir. Senkron; bir microservice diğer bir microservice e istek yaptğında eğer response (sonuç) için bekliyorsa bu senkron iletişimdir. Bu teknolojiler restful veya gRPC olabilir. ASenkron; bir microservice diğer bir microservice e istek yaptğında eğer response (sonuç) için beklemiyorsa bu aseknron iletişimdir. Böyle durumlarda da RabbitMQ gibi çözümler devreye giriyor.RabbitMQ Cloud üzerinde çalışıyoruz.
### Subscriber dan Cevap Beklemek
- RabbitMQ ya artık mesajları hemen silmemesini, subscriber dan bir mesaj beklemesini ve ardından silmesini söyleyeceğiz. Bu özellik gelen mesajı doğru işleyene kadar ilgili mesajın kuyrukta beklemesini sağlar.### Birden fazla Subscriber Kullanımı
- Bir kuyruğa birden fazla subcsriber bağlanabilir. Yapmamız gereken RabbitMQ ya kuyruktaki mesajı, subscriber lara nasıl göndereceğimizi söylemek. Yani tek seferde 1 er 1 er mi, yoksa 5 er 5 er mi gönderilecek.
- Elimizde 10 mesaj ve 2 subscriber olsun (a ve b). Eğer 1 er 1 er göndermek istersek. 1-a 2-b 3-a 4-b 5-a 6-b 7-a 8-b 9-a 10-b şeklinde gider.
- Elimizde 10 mesaj ve 2 subscriber olsun (a ve b). Eğer 5 er 5 er göndermek istersek. (12345)-a ya (678910)-b ye gider.## Exchange Types
- **Exchange**, Publisher'ın üretmiş olduğu mesajları ilgili kuyruklara route lamaktan görevli bir yapıdır. rabbitMQ da 4 farklı Exchange tipi vardır (Fanout, Direct, Topic, Header).- Eğer Exchange kullanmazsak Default Exchange olarak adlandırılır.
### Fanout Exchange
- Publisher dan gelen mesajı herhangi bir filtreleme yapmadan kendisine bağlı olan tüm kuyruklara iletir. Aynı mesajı tüm kuyruklara gönderir.