Company logo
  • Empleos
  • Bootcamp
  • Acerca de nosotros
  • Para profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
    • Bootcamp
  • Para empresas
    • Inicio
    • Nuestro proceso
    • Planes
    • Pruebas
    • Nómina
    • Blog
    • Comercial
    • Calculadora

0

143
Vistas
Using Async Event Listener with Nestjs EventEmitter Module and Serverless functions

I'm trying to implement an asynchronous worker with serverless lambda function with help of nestjs EventEmitter module.

Handler is getting invoked on emitting an event, but the function gets closed before the async / await call.

I have tried using both emit and emitAsync functions and different arguments for @OnEvent(AccountEvents.NEW_ACCOUNT, {async:true, promisify:true})

Producer Snippet

  public async execute(event: EventDetail): Promise<void> {

    await this.eventEmitter.emitAsync(AccountEvents.NEW_ACCOUNT, event);
  }

Listener Snippet

@OnEvent(AccountEvents.NEW_ACCOUNT)
  public async handleAccountCreatedEvent(event: EventDetail): Promise<void> {
    this.logger.log({ message: `Log1: ${AccountEvents.NEW_ACCOUNT} Handler`, event });
    const message = await this.testAsync();
    this.logger.log({ message });
    this.logger.log({ message: 'Log 3: Event Processing Successfuly Completed' });
  }

  private testAsync(): Promise<string> {
    return new Promise(res => {
      setTimeout(() => {
        res('Log 2: Promise resolved after one sec');
      }, 1000);
    });
  }

Expect Output : all the 3 log statements Actual Output : only first log statement (Log1)

7 months ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos