VodiSoft
TickerQ, .NET uygulamaları için geliştirilen yüksek performanslı, Source Generator destekli modern bir background job scheduler'dır. Cron görevleri, zamanlanmış işler, gerçek zamanlı dashboard, EF Core entegrasyonu ve daha fazlasını keşfedin.

TickerQ: Modern .NET Uygulamaları İçin Yeni Nesil Background Job Scheduler

Background task yönetimi, modern yazılım mimarilerinin vazgeçilmez parçalarından biridir.

E-posta gönderimi, rapor oluşturma, cache temizleme, bildirim servisleri, veri senkronizasyonu ve yüzlerce farklı işlem kullanıcı isteğinden bağımsız olarak arka planda çalıştırılır.

Bugüne kadar .NET geliştiricilerinin en çok tercih ettiği çözümler arasında Hangfire ve Quartz.NET yer aldı.

Ancak son yıllarda ortaya çıkan TickerQ, modern .NET geliştirme anlayışına uygun mimarisi, yüksek performansı ve geliştirici deneyimi ile dikkat çekiyor.


TickerQ Nedir?

TickerQ, .NET için geliştirilmiş açık kaynaklı bir Background Job Scheduler kütüphanesidir.

Temel amacı;

  • Zamanlanmış görevler çalıştırmak
  • Cron tabanlı işler oluşturmak
  • Tek seferlik görevleri planlamak
  • Dağıtık (Distributed) sistemlerde job yönetimi yapmak
  • Arka plan servislerini kolayca yönetmek

olarak özetlenebilir.

En dikkat çekici özelliklerinden biri ise klasik reflection tabanlı mimariler yerine Roslyn Source Generator kullanmasıdır. Böylece job kayıtları derleme zamanında oluşturulur ve çalışma anındaki ek yük önemli ölçüde azaltılır. :contentReference[oaicite:0]


Neden Yeni Bir Job Scheduler?

Piyasada yıllardır kullanılan başarılı çözümler mevcut.

Peki neden TickerQ?

Çünkü modern .NET uygulamaları artık;

  • Native AOT
  • Source Generator
  • Minimal API
  • Dependency Injection
  • OpenTelemetry
  • Cloud Native mimariler

gibi teknolojileri yoğun şekilde kullanıyor.

TickerQ da bu yeni nesil geliştirme yaklaşımını merkezine alarak tasarlanmış durumda.


Öne Çıkan Özellikler

Source Generator

TickerQ, Reflection yerine Source Generator kullanır.

Bunun avantajları:

  • Daha hızlı başlangıç
  • Daha düşük memory kullanımı
  • Compile-time güvenliği
  • Native AOT uyumluluğu
  • Daha yüksek performans

Cron ve Time-Based Scheduling

İki farklı zamanlama modeli sunar.

Belirli bir zamanda çalıştır

30 dakika sonra çalıştır

veya

1 Ağustos saat 09:00'da çalıştır

Cron Görevleri

Örneğin;

Her gece saat 02:00

veya

Her 15 dakikada bir

çalışacak görevler tanımlanabilir.


Dependency Injection Desteği

TickerQ tamamen Microsoft Dependency Injection mimarisiyle uyumludur.

Job sınıflarınız normal servisler gibi davranır.

public class EmailJobs
{
    private readonly IEmailService _emailService;

    public EmailJobs(IEmailService emailService)
    {
        _emailService = emailService;
    }

    [TickerFunction("SendEmails")]
    public async Task Execute(
        TickerFunctionContext context,
        CancellationToken cancellationToken)
    {
        await _emailService.SendPendingEmails();
    }
}

Reflection gerektirmeden derleme sırasında gerekli kayıtlar oluşturulur.


Kurulum

NuGet paketi oldukça kolay kuruluyor.

dotnet add package TickerQ

Servis kaydı ise oldukça basit.

builder.Services.AddTickerQ();

var app = builder.Build();

app.UseTickerQ();

İlk çalışan job oluşturmak yalnızca birkaç dakikanızı alır.


İlk Job

Bir job tanımlamak oldukça kolaydır.

public class MyJobs
{
    [TickerFunction("HelloWorld")]
    public async Task Hello(
        TickerFunctionContext context,
        CancellationToken cancellationToken)
    {
        Console.WriteLine("Hello TickerQ");
    }
}

Ardından istediğiniz zaman çalıştırabilirsiniz.

await manager.AddAsync(new TimeTickerEntity
{
    Function = "HelloWorld",
    ExecutionTime = DateTime.UtcNow.AddMinutes(1)
});

EF Core Entegrasyonu

TickerQ, EF Core desteğiyle gelir.

Bu sayede;

  • Job geçmişi
  • Retry bilgileri
  • Çalışma durumları
  • Zamanlama kayıtları

veritabanında saklanabilir.

Kendi DbContext yapınızı genişleterek mevcut uygulamanızla aynı transaction yapısını da paylaşabilirsiniz.


Gerçek Zamanlı Dashboard

TickerQ'nun en sevilen özelliklerinden biri Dashboard'dur.

Dashboard üzerinden;

  • Çalışan işler
  • Bekleyen işler
  • Başarısız görevler
  • Retry sayıları
  • Geçmiş loglar
  • Manuel tetikleme

gibi birçok bilgi gerçek zamanlı olarak izlenebilir. Dashboard, SignalR tabanlı canlı güncellemeler sunar.


Distributed Scheduling

Mikro servis mimarilerinde aynı job'ın birden fazla sunucuda çalışması ciddi problemlere yol açabilir.

TickerQ;

  • Distributed Coordination
  • Redis desteği
  • Dead Node Cleanup
  • Distributed Lock

gibi özelliklerle bu problemi çözmeyi hedefler.


OpenTelemetry Desteği

Modern gözlemlenebilirlik (Observability) çözümleri için OpenTelemetry paketi de sunulmaktadır.

Bu sayede background job'larınızı Prometheus, Grafana, Jaeger veya Azure Monitor gibi sistemlerle entegre edebilirsiniz.


TickerQ Kimler İçin Uygun?

TickerQ özellikle şu projelerde öne çıkar:

  • SaaS uygulamaları
  • ERP sistemleri
  • Mikro servis mimarileri
  • E-ticaret platformları
  • Bildirim servisleri
  • E-posta otomasyonları
  • Finans uygulamaları
  • Scheduled maintenance görevleri

Hangfire ve Quartz.NET'e Alternatif mi?

TickerQ doğrudan bu iki popüler çözüme alternatif olarak konumlanıyor.

Öne çıkan farklılıkları:

  • Source Generator tabanlı mimari
  • Reflection-free çalışma modeli
  • Native AOT uyumluluğu
  • Gerçek zamanlı Dashboard
  • Modern DI yaklaşımı
  • OpenTelemetry desteği
  • Dağıtık sistemler için hazır mimari

Bu özellikleri sayesinde özellikle yeni geliştirilen .NET projelerinde değerlendirmeye değer bir seçenek haline geliyor.


Sonuç

TickerQ, yalnızca bir cron kütüphanesi değildir.

Modern .NET uygulamalarının ihtiyaç duyduğu zamanlanmış görev yönetimini; yüksek performans, compile-time güvenliği, gerçek zamanlı izleme ve genişletilebilir mimari ile bir araya getiren kapsamlı bir platformdur.

Eğer yeni bir .NET projesi geliştiriyorsanız ve arka plan görevleri için modern, ölçeklenebilir ve geliştirici dostu bir çözüm arıyorsanız, TickerQ kesinlikle incelemeniz gereken açık kaynak projelerden biridir.

İlgili Yazılar

FmgLib.MauiMarkup mu, CommunityToolkit.Maui.Markup mı? Dürüst Bir Karşılaştırma

.NET MAUI arayüzünü XAML yerine C# ile yazmanın iki yolu var ve ikisi de akıcı (fluent) metotlar kullanıyor. Aradaki farkların neredeyse tamamı tek bir mimari tercihten doğuyor: elle seçilmiş uzantılar mı, yoksa kaynak üreteci mi? Bu yazıda farkları, her birinin hangi durumda daha iyi seçim olduğunu ve ikisinin aynı projede yan yana yaşayıp yaşayamayacağını ölçtüğümüz sonuçlarla ele alıyoruz.

Devamını Oku

Uygulamanın Tamamı Aynı Dili Konuşsun: .NET MAUI'de Üçüncü Parti Kontroller ve Kendi Fluent Metotlarınız

C# markup'ın gerçek projelerdeki en büyük sorusu: Syncfusion, UraniumUI, SkiaSharp gibi kütüphanelerin kontrolleri için fluent API kaybolur mu? Kaybolmuyor — aynı kaynak üreteci onlar için de çalışıyor. Tek satırlık opt-in'den otomatik taramaya, attached property'lerden yeniden tanımlanan property kurallarına, oradan kendi tasarım sistemi metotlarınızı yazmaya kadar tüm yolu ele alıyoruz.

Devamını Oku

VodiSoft

Yazılım projenizi gelir üreten bir ürüne dönüştürelim

Web, mobil, .NET, SaaS ve entegrasyon projeleri için teknik keşif yapalım; riskleri, takvimi ve en hızlı ticari kazanımı netleştirelim.

Teklif Al Toplantı