HHangfire Handbook

TEMEL

Konfigürasyon Referansı

Hangfire global ayarları, SQL Server storage, background job server, dashboard ve Redis seçenekleri için toplu başvuru sayfası.

Bu tablolar, sık kullanılan Hangfire ayarlarının varsayılanlarını, etkilerini ve hangi durumda değiştirilmesi gerektiğini birlikte gösterir.

AddHangfire (Global Konfigürasyon)

Ayar Varsayılan Açıklama Ne Zaman Değiştir
SetDataCompatibilityLevel Version_110 Storage format sürümü. 180 = yeni optimizasyonlar 1.8'e geçişte bir kez
UseSimpleAssemblyNameTypeSerializer Kapalı Type name'leri kısa yazar (assembly version hariç) Her zaman aç — rolling deploy kolaylığı
UseRecommendedSerializerSettings Kapalı JSON serializer ayarlarını optimize eder Her zaman aç

SqlServerStorageOptions

Ayar Varsayılan Açıklama Ne Zaman Değiştir
SchemaName "HangFire" DB schema adı — tabloların oluşturulacağı schema Her zaman "hangfire" olarak ayarla (izolasyon)
QueuePollInterval 15 saniye Ne sıklıkla yeni job kontrol edilir TimeSpan.Zero önerilir (SlidingInvisibilityTimeout ile long-polling aktif olur, polling gereksiz)
SlidingInvisibilityTimeout 5 dakika İşlenen job'un başka server'a görünmez kalma süresi Uzun-süren job'larda artır (job süresi + buffer)
CommandBatchMaxTimeout 5 dakika SQL batch komutlarının max timeout'u Genelde değiştirme
UseRecommendedIsolationLevel false ReadCommitted kullanır (Serializable yerine) Her zaman true — deadlock azaltır
TryAutoDetectSchemaDependentOptions false Schema sürümüne göre DisableGlobalLocks, UseIgnoreDupKeyOption vb. otomatik aktifler Her zaman true (1.8 best practice)
DisableGlobalLocks false App lock yerine row-level lock kullanır Multi-server'da true. Schema 7 gerektirir (yeni kurulumda otomatik, mevcut DB'de EnableHeavyMigrations ile migrate edin)
PrepareSchemaIfNecessary true Uygulama başlarken tabloları oluşturur Production'da true bırak (auto-migration)
EnableHeavyMigrations false Büyük schema değişikliklerini otomatik uygular Major version geçişinde veya DisableGlobalLocks için Schema 7'ye geçişte true yap, sonra false'a dön

BackgroundJobServerOptions (AddHangfireServer)

Ayar Varsayılan Açıklama Ne Zaman Değiştir
WorkerCount CPU × 5 Eşzamanlı çalışan job thread sayısı IO-bound: varsayılan yeterli, CPU-bound: CPU×1-2
Queues ["default"] Dinlenecek queue'lar (sıra = öncelik) Priority gerektiğinde: ["critical","default","low"]
ServerName hostname:pid Dashboard'da görünen server ismi Multi-instance'da anlamlı isim ver
ShutdownTimeout 15 saniye Graceful shutdown'da max bekleme süresi En uzun job sürenize göre ayarlayın
StopTimeout TimeSpan.Zero Server durma sinyali timeout ShutdownTimeout'tan kısa olmalı
HeartbeatInterval 30 saniye Server'ın "hayattayım" sinyali aralığı Genelde değiştirme
ServerCheckInterval 5 dakika Dead server temizleme kontrol aralığı Genelde değiştirme
ServerTimeout 5 dakika Bu süre heartbeat gelmeyen server "dead" sayılır HeartbeatInterval × 10+ olmalı
SchedulePollingInterval 15 saniye Scheduled job'ları kontrol etme aralığı Daha hassas scheduling istiyorsan düşür
CancellationCheckInterval 5 saniye İptal edilen job'ları kontrol aralığı Genelde değiştirme

DashboardOptions

Ayar Varsayılan Açıklama Ne Zaman Değiştir
Authorization LocalRequestsOnly Kimlerin erişebileceği (filter listesi) Production'da HER ZAMAN custom filter ekle
IsReadOnlyFunc null (everyone can write) Dinamik read-only kontrolü Role-based write kısıtlaması
DashboardTitle "Hangfire Dashboard" Başlık metni Hangi ortam/uygulama olduğunu belirt
DisplayStorageConnectionString true CS'yi dashboard'da gösterir Production'da HER ZAMAN false
StatsPollingInterval 2000 ms Dashboard istatistik yenileme sıklığı Yüksek trafikte artır (DB load azalt)

RedisStorageOptions (Pro)

Ayar Varsayılan Açıklama Ne Zaman Değiştir
Prefix "hangfire:" Redis key prefix'i Multi-tenant veya aynı Redis'te çoklu uygulama
Db 0 Redis database numarası Uygulama cache'i ile karışmasın diye ayır
InvisibilityTimeout 30 dakika İşlenen job'un diğer server'lara görünmez kalma süresi En uzun job sürenize göre
ExpiryCheckInterval 5 dakika Expired job temizleme aralığı Genelde değiştirme