Skip to content

Async Worker

Command: yo codedesignplus:microservice asyncWorker

Este comando se utiliza para crear un proyecto Async Worker dentro de un microservicio existente. Los Async Workers son procesos que ejecutan tareas en segundo plano, de forma asíncrona, mejorando el rendimiento y la capacidad de respuesta del microservicio. Este comando facilita la generación de la estructura básica para definir un worker en tu microservicio.

Prerrequisitos

Conceptos Clave

  • Async Worker (Trabajador Asíncrono): Es un proceso que se ejecuta en segundo plano, desacoplando la ejecución de tareas de la petición inicial. Esto permite que el microservicio responda rápidamente mientras las tareas más complejas se ejecutan de forma asíncrona.
  • Tareas en Segundo Plano: Son operaciones que no requieren una respuesta inmediata al cliente, como el envío de correos electrónicos, procesamiento de archivos, actualización de datos, etc.
  • Cola de Mensajes: Los Async Workers generalmente trabajan en conjunto con una cola de mensajes donde las tareas se encolan y el worker las consume de forma ordenada.
  • Desacoplamiento: Los Async Workers permiten desacoplar el procesamiento de las peticiones de la lógica de negocio, mejorando la escalabilidad y la mantenibilidad del microservicio.

Sintaxis del Comando

El comando yo codedesignplus:microservice asyncWorker tiene la siguiente sintaxis:

Terminal window
yo codedesignplus:microservice asyncWorker \
--organization "<organization_name>" \
--microservice "<microservice_name>" \
--consumer-name "<consumer_name>" \
--consumer-aggregate "<aggregate_name>" \
--consumer-action "<consumer_action>" \
--consumer-microservice "<consumer_microservice>"

--organization

  • Tipo: string
  • Obligatorio: Sí
  • Descripción: El nombre de la organización a la que pertenece el microservicio.

--microservice

  • Tipo: string
  • Obligatorio: Sí
  • Descripción: El nombre del microservicio donde se creará el proyecto async worker.

--consumer-name

  • Tipo: string
  • Obligatorio: Sí
  • Descripción: El nombre del evento que se consumirá.

--consumer-aggregate

  • Tipo: string
  • Obligatorio: Sí
  • Descripción: El nombre del agregado al que pertenece el evento que se consumirá.

--consumer-action

  • Tipo: string
  • Obligatorio: Sí
  • Descripción: La acción que realizará el consumer en respuesta al evento.

--consumer-microservice

  • Tipo: string
  • Obligatorio: No
  • Descripción: El nombre del microservicio que publica el evento que se consumirá.

Ejemplos de Uso

Este ejemplo crea un worker para el microservicio notifications de la organización acme, que consumirá los eventos de tipo orderCreated del agregado order para el envio de notificaciones.

Terminal window
yo codedesignplus:microservice asyncWorker \
--organization "Acme" \
--microservice "Notifications" \
--consumer-name "OrderCreated" \
--consumer-aggregate "Order" \
--consumer-action "send-notification" \
--consumer-microservice "ms-order"

Salida del comando en consola

Tras ejecutar el comando, se generará la estructura base para el Async Worker en el microservicio notifications, con la siguiente salida en consola:

Archetype

Directorios y Archivos Generados

Si exploramos el microservicio con VS Code, veremos la estructura de directorios y archivos generados para el nuevo Async Worker:

Archetype

Resultados de la Ejecución

La ejecución de este comando con los parámetros proporcionados generará la estructura base para un Async Worker en el microservicio especificado. Veamos los resultados de la ejecución del comando:

--organization

Flag: --organization "Acme"

  1. Este parámetro establece el nombre de la organización, que se refleja en los namespaces de los archivos generados para el proyecto Async Worker.

    Archetype

--microservice

Flag: --microservice "Notifications"

  1. Este parámetro establece el nombre del microservicio en el que se creará el Async Worker, reflejándose en los namespaces y ubicaciones de los archivos.
Archetype

--consumer-name

Flag: --consumer-name "OrderCreated"

  1. Este parámetro define el nombre del mensaje o evento que consumirá el worker, reflejándose en la lógica de consumo de mensajes.

    Archetype

--consumer-aggregate

Flag: --consumer-aggregate "Order"

  1. Este parámetro define el agregado asociado al mensaje o evento que consumirá el worker, reflejándose en la lógica de consumo de mensajes.

    Archetype

--consumer-action

Flag: --consumer-action "send-notification"

  1. Este parámetro define la acción del mensaje o evento que consumirá el worker, reflejándose en la lógica de consumo de mensajes.

    Archetype

--consumer-microservice

Flag: --consumer-microservice "ms-order"

  1. Este parámetro define el microservicio que publica el mensaje. En este caso, el microservicio ms-order publica el evento orderCreated.

    Archetype

Consideraciones Adicionales

  • Asegúrate de tener un microservicio existente antes de utilizar este comando.
  • Los Async Workers deben encargarse de ejecutar tareas en segundo plano, sin bloquear la respuesta del microservicio.
  • La configuración de la cola de mensajes debe estar previamente establecida para que el worker pueda consumir los mensajes.
  • Se recomienda utilizar un mensaje de cola diferente por cada action (consumer-action).

Enlaces Relacionados

Conclusión

El comando yo codedesignplus:microservice asyncWorker facilita la creación de proyectos de Async Worker en tu microservicio, permitiendo una mejor gestión de las tareas en segundo plano. Utiliza este comando para desacoplar la ejecución de tareas, mejorando la escalabilidad y capacidad de respuesta de tu microservicio.

¡Ahora el ejemplo es más claro y muestra mejor cómo usar el comando en diferentes contextos!