Symfony Messenger Kurulumu ve Temel Kullanımı

0 Yanıt 0 Görüntülenme
·
Katılımcılar
Konuyu Açan #1
Symfony Messenger modülü, modern PHP projelerinde mesajların asenkron ve senkron işlenmesini sağlayan güçlü bir bileşendir. Bu yazıda, Symfony Messenger’ın kurulumu, temel yapılandırması ve kullanımına dair detaylara odaklanıyoruz. Bu, özellikle yüksek trafikli uygulamalarda işlem yükünü dağıtmak veya zaman uyumsuz görevleri yönetmek isteyen geliştiriciler için önemli bir araçtır.

İlk olarak, Symfony Messenger’ı projeye eklemek için Composer kullanılır. Terminalde şu komutu çalıştırmak yeterlidir:
KOD
1composer require symfony/messenger

Bu adımla, temel kütüphane projeye entegre edilir ve yapılandırma dosyasında gerekli ayarların yapılması gerekir. Symfony’nin konfigürasyon dosyası olan config/packages/messenger.yaml içinde, mesajların nerede saklanacağı ve nasıl iletileceği belirlenir.
Örneğin, en yaygın kuyruk kullanımı için, Symfony’nin desteklediği birkaç mesaj taşıma sistemi (transports) yapılandırılabilir:
KOD
123456789  
framework:  
 messenger:  
  default_bus: messenger.bus.default  
  transports:  
   async:  
    dsn: '%env(MESSENGER_TRANSPORT_DSN)%'  
  routing:  
   'App\Message\YourMessage': async  

Burada, MESSENGER_TRANSPORT_DSN ortam değişkeni, kullanılacak mesaj iletim altyapısına göre ayarlanmalıdır. Örneğin, RabbitMQ veya Redis gibi sistemler tercih edilebilir. Ayrıca, mesajların gönderilip alınması için ilgili mesaj sınıflarını ve handler’larını oluşturmak gerekir.
Örnek bir mesaj sınıfı:
KOD
1234567891011121314151617  
namespace App\Message;  

class ExampleMessage  
{  
    private $content;  

    public function [b]construct(string $content)  
    {  
        $this->content = $content;  
    }  

    public function getContent(): string  
    {  
        return $this->content;  
    }  
}  

Handler ise şu şekilde tanımlanır:
KOD
123456789101112131415  
namespace App\MessageHandler;  

use App\Message\ExampleMessage;  
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;  

class ExampleMessageHandler implements MessageHandlerInterface  
{  
    public function [/b]invoke(ExampleMessage $message)  
    {  
        // Mesaj içeriğini işleme kodu  
        // Örneğin, loglama, API çağrısı, veritabanı işlemleri  
        // $message->getContent() ile içeriğe ulaşılır  
    }  
}  

Symfony Messenger, bu yapılandırma ve kodlama ile mesajların hem senkron hem de asenkron şekilde işlenmesini sağlar. Asenkron işlemler için kuyruklar ve arka plan işleyiciler konfigüre edilerek, uygulama performansı ve ölçeklenebilirlik artırılır. Ayrıca, cron veya worker süreçleri ile mesajlar sürekli takip edilip, işlenebilir hale gelir.

Bu temel bilgilerle, Symfony Messenger’ı projeye entegre edip, mesaj tabanlı mimarinin ilk adımlarını atmak mümkündür. Yüksek trafikli uygulamalarda görevleri dağıtmak ve sistem performansını optimize etmek için oldukça verimli bir araçtır.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 6, Üyeler: 6, Misafirler: 0)
Toplam: 6 (üyeler: 6, misafirler: 0)
0 alıntı seçildi