WebApi: Etkili KUYRUK Yapısı | Background Service Queue

  Рет қаралды 12,357

Tech Buddy

Tech Buddy

Күн бұрын

Пікірлер: 55
@abdulkadirkg
@abdulkadirkg 2 жыл бұрын
Salih hocam çok teşekkürler, keşke event fırlatıp onu başka bi yerde yakalamayı da görseydik 😜
@TechBuddyTR
@TechBuddyTR 2 жыл бұрын
Video çok uzuyor sonra 😂😂
@enesceb
@enesceb Жыл бұрын
Hocam elinize sağlık çok güzel bir anlatım olmuş tamda buna benzer bir şeye ihtiyacım vardı. Teşekkür ederim
@TheMyClint
@TheMyClint 2 жыл бұрын
Konu harika. Anlatım akıcı. Teşekkürler hocam. Hemen abone oluyorum
@kritikyorumer
@kritikyorumer 2 жыл бұрын
Bilgilendirme için teşekkürler. Güzeldi
@ermekbakyt5507
@ermekbakyt5507 2 жыл бұрын
Emeginize saglik!!! Cok cok tesekkurler! Best video!!!
@kamilkirdi9076
@kamilkirdi9076 2 жыл бұрын
Gerçekten benim için çok faydalı bir içerik oldu. Emeğinize sağlık.
@teknolojiuzmaniburada
@teknolojiuzmaniburada 2 жыл бұрын
Ellerinize emeğinize sağlık hocam. Teşekkür ederim 🙏
@aydemirzade34
@aydemirzade34 2 жыл бұрын
Emeğinize sağlık... Çok başaları hocam...
@atakanacar6066
@atakanacar6066 2 жыл бұрын
Teşekkürler hocam verdiğiniz bilgiler için
@furkanatillaersahan2426
@furkanatillaersahan2426 2 жыл бұрын
ITS REALLY WORKED LOL THANK YOU DUDE
@uguresen777
@uguresen777 5 ай бұрын
çok teşekkürler
@burhvndvyioglu
@burhvndvyioglu 2 жыл бұрын
İyi Çalışmalar Hocam, Bu video ile ilgili bir best practice örneği yapılabilir pekişmesi açısından. Mesela bir blog sitesinin altında mail bültenine katılabilirsiniz kısmı var. Mail bültenine katılan kullanıcılara blog yazısı paylaşıldığında belirttikleri mail adresine blog yayınlandı tarzı mail gönderimi sistemi olabilir.
@TechBuddyTR
@TechBuddyTR 2 жыл бұрын
Bu tarz bir yapıda rabbitmq, kafka vs gibi messagebroker ları kullanmak daha mantıklı olacaktır. Sözlük sitesi yazıyoruz projesindeki gibi. Orada bazı örneklerimiz rabbitmq aracılığı ile yönetiliyor. Oradan istifade edebilirsiniz best practice için
@AhmedSinek
@AhmedSinek 2 жыл бұрын
Hocam burda generik yapi olsayda daha guzel olurdu ama yine de super olmus ben denedim bende calisti ve bunu sql ekstra backup gibi ayri bir database yazmak icin kullanicagim emeginize salik.....
@TechBuddyTR
@TechBuddyTR 2 жыл бұрын
Kendime yaptığım örnekte generic bir yapı vardı. O zaman da action vermek gerekiyor tabi daha generic tutabilmek için. Bu sefer de işler biraz daha az anlaşılabilir olurdu. Videoyu da çok uzatmamak adına string olarak devam ettim
@yusufcirakkk
@yusufcirakkk 2 жыл бұрын
@@TechBuddyTR Hocam generic yapmayı denedim ama controller'da, hostedSevice'de tipi belirtmek gerekiyor. Daha fazla generic yapabilir miyiz? Action ile kurgulayamadım
@furkanpasaoglu4079
@furkanpasaoglu4079 2 жыл бұрын
Emeğinize Sağlık Hocam
@abdulhamit92
@abdulhamit92 2 жыл бұрын
Teşekkürler
@murat.yuceer
@murat.yuceer Жыл бұрын
nice job
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Thanks
@sametsahin6193
@sametsahin6193 Жыл бұрын
hocam çok faydalı oldu teşekkürler , şöyle bir sorum var job'ı user'ın set ettiği tarihte çalıştırmanız gerekirse ve birden fazla böyle methodlarınız olsaydı nasıl bir yapı kullanırdınız , hint verme şansınız var mı?
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Quartz kütüphanesi ile Sceheduler gibi bir yapı kullanırdım 😊
@sametsahin6193
@sametsahin6193 Жыл бұрын
@@TechBuddyTR Quartz'a çok hakim değilim ama şuanda hangfire ile statik schedule edilmiş joblar var. Bunu backgroundservice 'e çevirip dbden okuma yapacağımız (kullanıcı random değerler girebilir her pzt 8.10 salı 16.30 da çalışsın gibi) bir yapıya geçirmede karar kılmıştık bir de Quartz'a bakayım. Teşekkürler
@yigitgnc
@yigitgnc 6 ай бұрын
@@sametsahin6193 ben bunun için bir de queuer background service yazdım. çeşitli big tasklar için n adet backgroundqueue service'ım var ve bunların her birine ilgili taski yazacak başka bir backgroundtask'im var. her 2.5 saniyede bir db ye tamamlanmamış iş olup olmadığına bakıp eğer varsa o işi zamanı geldiğinde ilgili queue'ya atıyor
@murat.yuceer
@murat.yuceer Жыл бұрын
burdaki kuyruğu persist hale getirirsek güzel olurdu
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Kuyruk yapıları ile ilgili başka videolarımız var. Onlara bekleriz :)
@veyselkucukkaraca8698
@veyselkucukkaraca8698 Ай бұрын
youtube videolarını bıraktığınz ama, bir sorum olacak. background servis türetilebilir mi? websoket üzerinden veri çeken bir servis düşünelim. belli türden çeşitli veriler çekecek ama hepsini değil. özelleştirilmiş verileri çekeceğim. dolayısıyla, ethusdt eklediğim zaman servis anlık veri çekecek, sonra btcusdt eklediğimde yeni bir servis ayağa kalkacak ve beraberinde btcusdt'nin verilerini de çekmeye başlayacak.
@TechBuddyTR
@TechBuddyTR Ай бұрын
@@veyselkucukkaraca8698 tek bir background service içerisinde farklı task lar oluşturarak yapabilirsiniz bunları. Biraz daha profesyonel yapmak isterseniz quartz veya hangfire gibi kütüphaneleden yardım alabilirsiniz
@furkanyigit1669
@furkanyigit1669 5 ай бұрын
Channel yerine redis kullanarak kuyruklu bir mail gönderme fonksiyonu yazsaydık, insert bekleme olayını yine bu mantıkta yapamazdık sanırım, peki execute bölümünde redis boş ise stop edip, insert tarafında ise start yapsaydık sürdürülebilir olur muydu hocam
@TechBuddyTR
@TechBuddyTR 5 ай бұрын
Redis'in Streaming özelliğinden mi bahsediyorsunuz? Eğer böyle bir şey yapacaksak, bu client ile Redis arasında bir bağlantının sürekli açık kalması demek oluyor. Event yapısı kullanacaksak aslında Redis yerine RabbitMQ veya Kafka gibi bu iş için özelleştirilmiş araçlardan yararlanmakta fayda var. Ama benim burada anlatmaya çalıştığım konu, C# içerisindeki BackgroundWorker tarafını daha efektif kullanabilmekti.
@furkanyigit1669
@furkanyigit1669 5 ай бұрын
@@TechBuddyTR yok aslında kuyruk mantığında web apiden aldığım verileri db dışında redise de kaydedip, backgroundworker tarafında da sürekli redisde veri varsa bir tane getir maili gönder redisden sil kurgusunu düşünmüştüm. Bir nevi gidecek mailleri channel de tutmak yerine redisde tutmak, ileride bakım amaçlı yeniden build ettiğimde channelde mesaj varsa uçup gidecek ama redis kullanırsam kalmaya devam eder. Sizin tavsiye edeceğiniz kurgu var ise dinlemek isterim, toplu sms ve mail atan bir web api var diyelim, istenen ise bunları bir kuyruğa alıp mail ve sms workerleri kendi kuyruklarındaki işleri yapacak
@sertunc-k5o
@sertunc-k5o 2 жыл бұрын
hocam 21:50 de queue.Reader.ReadAsync(); satırının önüne await konulmamasının özel bir sebebi var mı? teşekkürler
@TechBuddyTR
@TechBuddyTR 2 жыл бұрын
Evet. Bekleme işini bu class'ın içerisinde yapmıyoruz. Onun yerine zaten ayrı bir task olarak çalışan BackgroundService içerisinde bekliyoruz. Zaten metodumuz geriye string değil ValueTask dönüyordu. Backgroundservice tarafında zaten bekleyeceğiz buradan bize kayıt gelmesini, burada da beklemek anlamsız olacaktı :)
@sertunc-k5o
@sertunc-k5o 2 жыл бұрын
@@TechBuddyTR süper orayı kaçırmışım hocam. teşekkürler
@ugurbaran3266
@ugurbaran3266 Жыл бұрын
Hocam emeğinize sağlık. Ben bu yapıda geliştirmiş olduğum bir projeyi bilgisayar başlar başlamaz çalıştırmak istiyorum nasıl yapabilirim? Denedim Web Api çalışıyor fakat Background servis çalışmıyor.
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Sisteme inject ettiniz mi servisi?
@ugurbaran3266
@ugurbaran3266 Жыл бұрын
Evet Hocam. @@TechBuddyTR
@TechBuddyTR
@TechBuddyTR Жыл бұрын
@@ugurbaran3266 o zaman sistem başladığında, Execute metodu çalışmalıydı
@muhammeda1426
@muhammeda1426 2 жыл бұрын
Hocam canlıda bana sorun çıkardı cidden bu prod 3 serverda koşuyordu testte çalışırken prodda kesinlikle çalışmıyordu
@Furkan24664
@Furkan24664 Жыл бұрын
Hocam merhaba çok yararlı bir video ama tam anlamadım şeyler var . Biz bu işlemleri normal controller method a istek geldigindede yapabilirdik neden queue da beklettik gerçek projerlerdede boyle yapıldıgını duydum ama nedenini bilmiyorum .
@TechBuddyTR
@TechBuddyTR Жыл бұрын
Action metod içerisinde yapsaydık tüm bu işlemleri, tüm isim'ler işlenene kadar kullanıcıyı ve request'i bekletmemiz gerekirdi ki bu gereksiz bir yük oluştururdu sistemde. Thread'lerin boşa kullanılması vs gibi. Böyle bir kuyruk yapısı dışarıdan alınan ama arka planda işleyebilecek işler olduğunda faydalı olabilir. Aslında dışarıdan alınmasına bile gerek yok. Belirli bir zaman diliminde gidip veritabanındaki kayıtları çekip, işleyebilirsiniz böyle bir kuyruk yapısı kullanarak. Asenkron şekilde işlemler yapmak istediğimizde kullanabiliriz yani kısacası.
@omerbasavul
@omerbasavul 2 жыл бұрын
Merhaba kıymetli kardeşim, Fazla gereksiz şekilde uzatmayacağım. 0:00'dan 0:20'ye kadar dediklerin ve sözüm ona "clickbait" olan thumbnailin yüzünden buraya geldim. Bahsettiğin konsept C# ile sınırlı olan bir konsept değil. Böyle bir fonksiyon olmadan iş yapabilmek zaten mümkün değil. İşi temelinden anlatmak gibi bir yaklaşımın olsaydı bu video yeterli olabilirdi bazı kimseler için. BackgroundService'lerden bahsediyorsun, çok fazla şey yapmana gerek yok Visual Studio içinde bir Thread nesnesi oluştur sana direkt olarak propertylerinde arka plan servisi hakkında ufak infolar verecektir. Bu konu hakkında illa bi video yapacaksan, Türkiye'de zaten pamuk ipliğine bağlı olan yazılım geliştiriceleri komunitesine taş atmadan yapmalısın. Videonun devamında nelerden bahsediyorsun bilmiyorum atlayarak bi kaç bölüme baktım. Tavsiyem HangFire, Quartz gibi frameworkler hakkında bir video yapmandır. Hatta CQRS Desenini ve RabbitMQ'yu da anlatabilirsin. Tabi bu konuyu yine en iyi sen bilirsin ama ben yine de tavsiye edeyim meraklısına. Kolay gelsin
@TechBuddyTR
@TechBuddyTR 2 жыл бұрын
Selamlar, kıymetli yorumunuz için teşekkür ederim. Ancak sanırım kanaldaki ilk videonuzu izleyebiliyorsunuz. Video içerisinde de daha önce kanala yüklediğim hem BackgroundService lerden hem de rabbitmq videolarından bahsettim. Hatta inanmayacaksınız rabbitmq, microservis, cqrs, ddd, azure servicebus, redis, docker gibi konuların içinde olsun full bir video serisi de var. Ayrıca thread nedir, task nedir, await neden kullanılır gibi kapsamlı videolar da kanalın bünyesinde mevcut. Dolayısı ile başka videolarda detaylarına girdiğim konularda detay vermekten özellikle imtina ediyorum. Bilgilerinize :)
@TechBuddyTR
@TechBuddyTR 2 жыл бұрын
Ayrıca şunu da söylemeden edemeyeceğim; pamuk ipliğine bağlı olduğunu düşündüğünüz yazılım geliştiriciler topluluğuna elimden geldiği kadar ben de destek olmaya çalışıyorum. Sizlerin de varsa katkıları, okumak veya izlemek yolu ile istifade etmek isterim
@omerbasavul
@omerbasavul 2 жыл бұрын
@@TechBuddyTR Kusura bakma lütfen, dediğim gibi direkt olarak küçük resme bakarak geldim. 15 yıl geçti bu senaryoların (yazılımdan bahsediyorum burada) üzerinden :) Öyleyse emeklerin için kendi adıma teşekkür ederim. İyi çalışmalar ! ^^
@murad-dov
@murad-dov 2 жыл бұрын
Hocam merhaba web service dedikleri bumu ?
@TechBuddyTR
@TechBuddyTR 2 жыл бұрын
Web servis dedikleri muhtemelen web api dır :)
@murad-dov
@murad-dov 2 жыл бұрын
@@TechBuddyTR teşekkürler :)
@alpertorun8728
@alpertorun8728 Жыл бұрын
Salih hocam teşekkürler elinize sağlık. Hangfire yada rabbit mq teknolojisi kullanılan bir projede böyle bir yapıdan yardım almak nekadar mantıklı yada gerekli olabilir?
@TechBuddyTR
@TechBuddyTR Жыл бұрын
RabbitMQ ve Hangfire, proje dışında üçüncü parti uygulamalar. Genelde diğer sistemler ile haberleşmek için kullanılıyorlar. Buradaki kuyruk yapısı ise, proje içindeki parçaların birbiri ile haberleşmesi için kullanılabilir. Örneğin DDD videosunu izlediyseniz orada DomainEvents'ler vardı :) O yapı için kullanılabilirler.
@alpertorun8728
@alpertorun8728 Жыл бұрын
@@TechBuddyTR teşekkürler
@serpilbostancoglu2658
@serpilbostancoglu2658 2 жыл бұрын
Highly rec
@bestekarx
@bestekarx Жыл бұрын
@seyfullahtanriverdi9602
@seyfullahtanriverdi9602 2 жыл бұрын
Bu değerli bilgiiçin teşekkür ederim.
C# Sadece Array Kullanarak Yeni List Yaratmak | Custom List
1:03:24
.Net Core Dependency Injection | Transient | Scoped | Singleton
29:37
How to treat Acne💉
00:31
ISSEI / いっせい
Рет қаралды 108 МЛН
Mom Hack for Cooking Solo with a Little One! 🍳👶
00:15
5-Minute Crafts HOUSE
Рет қаралды 23 МЛН
.Net Core BackgroundService | IHostedService
21:49
Tech Buddy
Рет қаралды 7 М.
WebApi Task Async Benchmark | Await Task | Async Task Api
34:06
.Net Core CQRS + MediatR | CQRS Pattern | Mediator Pattern
29:45
C# Await Task | Async Task | Task WhenAll | C# Task Confusion
34:25
What is DevOps? - Coding in Big Companies: How It Works
26:01
Barış Dere
Рет қаралды 108 М.
Youtube'u BIRAKIYORUM! | Bir Devrin Sonu
36:18
Tech Buddy
Рет қаралды 11 М.