Inicio » Comunidad » Eventos de dominios con Broadway

Eventos de dominios con Broadway

Resuelto Cerrado
0
0

Hola,

Estoy implementado toda la parte de eventos con Broadway, he creado el evento cuando un usuario se ha registrado:

CreateUserUseCase:

$user = User::create(
    $createUserRequest->firstName(),
    $createUserRequest->email(),
    $createUserRequest->password()
);

$this->userEventRepository->store($user);

return new UserResponse($user);

Luego en el dominio, tengo la creación del evento:

User:

public function getAggregateRootId(): string
{
   return $this->id->value();
}
public static function create(
   FirstName $firstName,
   Email $email,
   Password $password,
): self
{
   $user = new self(
      UUid::uuid4(),
      $firstName,
      $email,
      $password
   );

   $user->apply(UserWasCreated::create(
      $user->id(),
      $user->firstName(),
      $user->email(),
      $user->password()
   ));

   return $user;
}

protected function applyUserWasCreated(UserWasCreated $userWasCreated): void
{
   $this->id = $userWasCreated->id();
   $this->firstName = $userWasCreated->firstName();
   $this->email = $userWasCreated->email();
   $this->password = $userWasCreated->password();
}

Pero el problema que tengo es  cuando un usuario se da de baja:

– ¿Cuál sería la mejor manera de implementarlo con Broadway?
– ¿Tengo que agregar un nuevo evento? – Si lo hago me genera un error de DuplicatePlayheadException

Gracias 🙂

Mejor respuesta
0
0

Hola Alex,

Sí, debes crear un evento nuevo al dar de baja el usuario. Respecto al error DuplicatePlayheadException, no puedo decirte mucho ya que no tengo experiencia con la librería Broadway, pero verifica que no se esté guardando el evento con algún dato duplicado como el ID.

0
0

Con respecto al tema del error, he visto que Broadway  lo interpretaba como un nuevo evento y lo intentaba añadir en el tabla de events y al detectar que ya existía pues generaba la excepción DuplicatePlayheadException

2 resultados
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad