Maison  >  Article  >  cadre php  >  Développement Laravel : Comment implémenter des applications événementielles à l'aide de Laravel Event Sourcing ?

Développement Laravel : Comment implémenter des applications événementielles à l'aide de Laravel Event Sourcing ?

PHPz
PHPzoriginal
2023-06-14 14:31:491190parcourir

Développement Laravel : Comment implémenter des applications basées sur les événements à l'aide de Laravel Event Sourcing ?

Avec le développement de la technologie du cloud computing et l'expansion continue des scénarios d'application, les applications événementielles sont devenues une approche architecturale de plus en plus importante, en particulier dans les grands systèmes distribués. Laravel Event Sourcing est un cadre pour implémenter des applications basées sur des événements. Cet article explique comment utiliser Laravel Event Sourcing pour créer des applications basées sur des événements.

1. Qu'est-ce que le sourcing d'événements Laravel ?

Laravel Event Sourcing est une extension Laravel basée sur une architecture basée sur les événements et CQRS (Command Query Responsibility Separation), qui peut nous aider à mettre en œuvre rapidement des applications basées sur des événements.

En termes simples, Laravel Event Sourcing convertit toutes les opérations commerciales en événements et conserve ces événements dans le stockage d'événements. Lorsque nous avons besoin d'obtenir des données, il nous suffit de les reconstruire en fonction de l'événement pour obtenir l'état actuel.

2. Avantages de Laravel Event Sourcing

  1. Haute évolutivité du système

Laravel Event Sourcing convertit les opérations commerciales en événements, afin que de nouvelles opérations et fonctions commerciales puissent être facilement ajoutées sans modifier le code d'origine.

  1. Haute fiabilité de l'application

Étant donné que tous les événements sont persistants, lorsque le système tombe en panne, nous pouvons reconstruire le système en fonction des événements pour garantir la fiabilité de l'application.

  1. Meilleures performances en temps réel

Laravel Event Sourcing utilise des files d'attente d'événements, qui peuvent réaliser un traitement asynchrone des événements et améliorer les performances en temps réel du système.

3. Utilisez Laravel Event Sourcing pour créer des applications basées sur des événements

  1. Installez Laravel Event Sourcing

Nous pouvons utiliser Composer pour installer Laravel Event Sourcing :

composer nécessite spatie/laravel-event-sourcing

  1. Définir les événements

Nous devons définir tous les événements dans l'application. Par exemple, nous devons créer un événement enregistré par un utilisateur :

class UserRegistered
{
    public string $userId;

    public string $name;

    public string $email;

    public function __construct(string $userId, string $name, string $email)
    {
        $this->userId = $userId;

        $this->name = $name;

        $this->email = $email;
    }
}
  1. Créer un gestionnaire d'événements

Nous devons créer un gestionnaire d'événements responsable de la gestion de tous les événements. Par exemple, nous devons créer un gestionnaire d'événements qui gère les événements d'enregistrement des utilisateurs :

class UserRegisteredEventHandler
{
    public function __invoke(UserRegistered $event)
    {
        User::create([
            'id' => $event->userId,
            'name' => $event->name,
            'email' => $event->email,
        ]);
    }
}
  1. Définir une racine agrégée

Une racine agrégée est la partie centrale d'une application pilotée par événements, elle représente une certaine entité dans l'application. Nous devons définir la racine agrégée et implémenter les changements d’état de la racine agrégée. Par exemple, nous devons créer une racine d'agrégation d'utilisateurs :

class UserAggregateRoot extends AggregateRoot
{
    public function register(string $userId, string $name, string $email)
    {
        $this->recordThat(new UserRegistered($userId, $name, $email));
    }

    protected function applyUserRegistered(UserRegistered $event)
    {
        // 用户注册的状态变化
    }
}
  1. Déclencher des événements

Dans notre code métier, nous pouvons déclencher des événements directement, par exemple :

$userAggregateRoot = new UserAggregateRoot();

$userAggregateRoot->register('123', 'Tom', 'tom@example.com');
  1. Restaurer le système

Lorsque le système tombe en panne, nous Le système peut être reconstruit simplement en rejouant tous les événements. Par exemple, nous pouvons utiliser le code suivant pour reconstruire le système :

class UserRepository
{
    public function getById(string $userId): User
    {
        $user = new User();

        $userAggregateRoot = new UserAggregateRoot();

        $eventStream = event()->getStreamById($userId);

        foreach ($eventStream as $event) {
            $userAggregateRoot->replay([$event]);

            $user = $userAggregateRoot->get();
        }

        return $user;
    }
}

C'est tout pour créer une application basée sur les événements à l'aide de Laravel Event Sourcing. En convertissant toutes les opérations commerciales en événements et en les conservant, nous pouvons très bien implémenter des applications basées sur les événements.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn