fntneves/laravel-transactional-events, Laravel uygulamalarında event'ların veritabanı transaction'larıyla senkronize çalışmasını sağlayan bir PHP paketidir. Paketin temel amacı, bir transaction içinde tetiklenen event'ların, transaction başarılı olduğunda işlenmesini garanti altına almaktır. Bu sayede veritabanı işlemi başarısız olduğunda event'ların da işlenmesi engellenir ve veri tutarlılığı korunur. Özellikle kritik iş süreçlerinde (örneğin sipariş oluşturma, ödeme işlemleri) event'ların yanlış zamanda işlenmesi sonucu oluşabilecek tutarsızlıkların önüne geçilir.
Hangi ihtiyaçlarda değerlendirilebilir?
- Transaction sınırları içinde event fırlatan ve bu event'ların yalnızca başarılı işlemlerde işlenmesini isteyen Laravel projeleri
- Dağıtık sistemlerde veya kuyruk tabanlı işlemlerde veri tutarlılığını ön planda tutan ekipler
- Mevcut Laravel event sistemini transaction-aware hale getirmek isteyen geliştiriciler
Yaygın kullanım alanları
Sipariş ve Ödeme İşlemleri
Bir sipariş oluşturulurken stok düşme, ödeme kaydı gibi birden fazla veritabanı işlemi yapılır. Bu işlemler sırasında tetiklenen event'ların, transaction başarılı olduktan sonra işlenmesi sağlanarak yarıda kalan işlemlerde yanlış bildirimlerin veya kuyruk işlerinin önüne geçilir.
Kullanıcı Kayıt ve E-posta Doğrulama
Kullanıcı kaydı sırasında e-posta doğrulama event'ı fırlatılabilir. Eğer kayıt transaction'ı başarısız olursa, e-posta gönderimi de engellenir. Böylece kullanıcıya yanlışlıkla doğrulama e-postası gitmesi önlenir.
Finansal İşlemler ve Bildirimler
Para transferi veya fatura kesme gibi işlemlerde, işlem başarılı olduktan sonra bildirim event'ları işlenmelidir. Transaction-aware dispatcher sayesinde işlem başarısız olduğunda bildirimler de işlenmez, böylece kullanıcıya yanlış bilgi verilmesi engellenir.
İncelenmesi gereken noktalar
- Paketin çalışabilmesi için Laravel uygulamanızın mevcut event dispatcher'ının bu paketle değiştirilmesi gerekir; bu değişiklik mevcut event akışını etkileyebilir.
- Transaction dışında tetiklenen event'lar (örneğin transaction başlamadan önce) bu paketin kapsamı dışında kalır; bu durumda event'ların işlenme zamanı konusunda ek kararlar almanız gerekebilir.
- Paketin davranışını tam olarak anlamak için kaynak kodunu incelemek ve kendi senaryolarınızda test etmek önemlidir; her ortamda aynı davranışı göstereceği garanti edilmez.
WordPress.org
Kurulum ve geliştirme notları
Paketin kurulumu Composer ile yapılır. Resmi dokümantasyonda kurulum adımları detaylı olarak verilmemiştir, ancak paket Packagist üzerinden yayınlandığı için standart Composer kurulumu yeterlidir.
- 1Composer kullanarak paketi projenize ekleyin: composer require fntneves/laravel-transactional-events
- 2Paketin servis sağlayıcısını Laravel uygulamanızın config/app.php dosyasındaki providers dizisine ekleyin (dökümantasyonda tam adı belirtilmemiştir).
- 3Event dispatcher'ı paketin dispatcher'ı ile değiştirmek için gerekli konfigürasyonu yapın (dökümantasyonda detay verilmemiştir).
Paketin geliştirme süreci, mevcut Laravel event sisteminin transaction-aware hale getirilmesi üzerine kuruludur. Resmi dokümantasyonda geliştirme detayları verilmemiştir, ancak paketin kaynak kodunu inceleyerek davranışını anlayabilirsiniz.
- Paket, Laravel'in event dispatcher'ını genişleterek transaction sınırlarını algılar.
- Transaction başarılı olduğunda event'ların işlenmesini sağlar; başarısız olduğunda ise event'ları işlemez.
- Kuyruk tabanlı event'lar için de uyumluluk sağlayabilir (dökümantasyonda detay yok).
Hazır çözümün ötesinde
Özel geliştirme ne zaman değerlendirilebilir?
ZeplinGo olarak, Laravel projelerinizde transaction ve event yönetimini birlikte ele alan özel çözümler geliştiriyoruz. Bu paketin ihtiyaçlarınıza uygun olup olmadığını birlikte değerlendirebilir, mevcut sisteminize entegrasyonunu planlayabiliriz. Ayrıca, bu paketin yetersiz kaldığı durumlar için özel event dispatcher çözümleri de tasarlayabiliriz.
Ücretsiz ön çalışma isteyin →Değerlendirme soruları
Bu paket hangi Laravel sürümleriyle uyumludur?
Paketin Packagist sayfasında uyumlu Laravel sürümleri belirtilmemiştir. Bu nedenle, projenizde kullanmadan önce paketin composer.json dosyasını inceleyerek Laravel sürümünüzle uyumlu olduğundan emin olmanız önerilir.
Paket, mevcut event'larımı nasıl etkiler?
Paket, event dispatcher'ı değiştirdiği için tüm event'ların işlenme zamanı transaction durumuna bağlı hale gelir. Transaction dışında tetiklenen event'lar normal şekilde işlenmeye devam eder, ancak transaction içinde tetiklenenler transaction başarılı olana kadar ertelenir.
Paketi kullanmak için ek bir konfigürasyon gerekiyor mu?
Resmi dokümantasyonda detaylı konfigürasyon adımları verilmemiştir. Ancak, paketin servis sağlayıcısını kaydetmeniz ve event dispatcher'ı değiştirmeniz gerekebilir. Bu adımlar için paketin kaynak kodunu veya Packagist sayfasındaki açıklamaları inceleyebilirsiniz.