Torna al blog
TutorialOctober 1, 20228 min

Serie de Ejemplos: Solicitudes Http-Client

Las interfaces ReST son populares y abundantes. Te mostramos cómo configurar solicitudes Http-Client dentro de layline.io usando Yahoo Finance como ejemplo.

Serie de Ejemplos: Solicitudes Http-Client

Lo que mostraremos

En este artículo mostraremos cómo configurar rápidamente un workflow de layline.io para consultar una REST-API usando la API de Yahoo Finance como ejemplo. Crearemos un workflow que consulte Yahoo para obtener cotizaciones de acciones a intervalos frecuentes.

Configuración del Http-Service

Primero iniciamos la interfaz web y creamos un nuevo Proyecto "sample-http-client-yahoo". Luego creamos un Http-Service Asset "Yahoo-Finance-Source".

¿Qué son los Servicios?

Los servicios en layline.io representan Assets específicos que encapsulan definiciones de interfaces complejas y luego las exponen a otros Assets como llamadas a funciones simples con nombre para una fácil invocación. Las definiciones de REST-API encajan en ese patrón, al igual que, por ejemplo, las declaraciones de bases de datos. Para este propósito, layline.io proporciona una serie de Service Assets que están orientados hacia tipos de interfaces específicas, como Http, JDBC, Aerospike, y más. En nuestro ejemplo, usaremos el Http-Service Asset para acceder a la API de Yahoo Finance.

La REST-API de cotizaciones de acciones de Yahoo

Yahoo Finance proporciona una API muy completa para acceder a la información financiera de empresas cotizadas públicamente. Para esta demostración, pasaremos por Rapid-API que actúa como un servicio proxy. Si no conoces Rapid-API, deberías echarle un vistazo. Es realmente genial.

Puedes buscar la URL exacta para el servicio y su descripción aquí, luego verifica la ruta "market/v2/get-quotes".

Configuración del Http-Service

Usando el Configuration Center creamos un Http-Service Asset:

Host

A continuación, definimos la dirección del host genérico en la que se puede acceder a los datos. Esto no requiere credenciales, pero sí claves API que definiremos más adelante.

Requests

Antes de definir Funciones, nos aseguramos de que layline.io entienda las solicitudes y las respuestas correspondientes. Puedes definir cualquier número de solicitudes. Aquí solo definimos "GetQuotes" que debería recuperar las cotizaciones de acciones y los datos relacionados para un número dado de símbolos de cotización de acciones. Aquí también es donde se define la ruta a la solicitud. Además, configuramos los parámetros requeridos para invocar la API (región y símbolos, así como la clave y el host de RapidAPI). Proporcionamos los valores cuando definimos el Source Asset en un siguiente paso.

Si quisiéramos usar otras solicitudes, simplemente podríamos agregarlas aquí.

Response

A continuación, definimos posibles respuestas a nuestra solicitud. Esperamos un documento JSON que hemos definido en "Quotes". layline.io es fuertemente tipado. En nuestro caso simplemente mapeamos la respuesta al tipo interno "AnyMap". Respuestas adicionales podrían ser fallos 3xx a 5xx en los que también estamos interesados.

Functions

Ahora que hemos definido solicitudes y respuestas, podemos crear las funciones abstractas que queremos exponer internamente.

Creamos una función con el nombre de "GetQuotes". Hace referencia a la solicitud con el mismo nombre que hemos creado anteriormente, y asignamos posibles respuestas a esta solicitud ("Quotes").

Ahora podemos acceder a la API de Yahoo Finance simplemente invocando la función "GetQuotes" y pasando los parámetros requeridos. Veremos un ejemplo de esto cuando definamos el Service Source a continuación.

Por fin, bastante que configurar para un primer Http-Service. Pero ten en cuenta que se pueden agregar solicitudes adicionales al mismo host muy rápidamente.

Configuración del Service-Source

Planeamos consultar constantemente la API para obtener los últimos datos de acciones y queremos tratarla como una fuente de datos regular en el workflow. Necesitamos definir un Service-Source Asset para esto. Un Service-Source Asset es un tipo especial de Source que utiliza Funciones definidas en Service Assets, tal como el que hemos definido anteriormente.

Enlazamos el Http-Service que hemos definido a esta Source:

Finalmente, configuramos la frecuencia de consulta de la API y los parámetros de llamada de la API real.

A través de una configuración similar a una tabla cron, definimos un intervalo de consulta de 10 segundos. Object name denota el nombre del objeto que será devuelto por cada consulta. Ten en cuenta que agregamos la fecha y hora al nombre del objeto para distinguir cada objeto de respuesta. Usamos un parámetro constante para la consulta, lo que significa nada más que queremos pasar parámetros codificados a la Función del Servicio en lugar de parámetros dinámicos. Así que siempre estamos invocando la función para los mismos símbolos de cotización de acciones en nuestro ejemplo. El Constant Type describe la ruta a la Función del Servicio real que queremos llamar y su objeto de solicitud. Por ahora, esto debe ingresarse manualmente, pero pronto será guiado por el usuario. Ingresamos Yahoo.Finance.Functions.GetQuotes.Request aquí.

Por último, proporcionamos los parámetros que queremos pasar a la función GetQuotes en formato JSON. Recuerda que los hemos definido cuando creamos el Http-Service Asset.

Eso es todo, ahora podemos crear el Workflow real.

Creando el Workflow

Nos dirigimos a la interfaz de Workflow y configuramos un Workflow simple con una Entrada de Stream y un Procesador de JavaScript.

En la configuración del Service-Input Asset lo enlazamos al Http-Source que acabamos de crear.

Para el Procesador de Javascript agregamos un script muy simple que envía el mensaje recibido al registro de stream. Así es como podemos inspeccionar los resultados a través del Audit Trail en la interfaz. Por supuesto, normalmente no enviarías los resultados al registro, sino que los procesarías aguas abajo en el Workflow.

Desplegar en el Cluster y ejecutar

Estamos listos para probar el Workflow. Para hacerlo, necesitamos desplegarlo en un Reactive Engine Cluster. Puedes simplemente usar el que está en tu laptop (nodo único). O si tienes un cluster de layline.io más grande en otro lugar, puedes desplegarlo allí. Para desplegar, cambiamos a la pestaña DEPLOYMENT del Proyecto:

Creamos una Engine Configuration para desplegar el Proyecto. Esto define las partes del Proyecto que deseamos desplegar. En nuestro ejemplo, eso sería el único Workflow que definimos, así como el Environment Asset que lo acompaña.

Dado que queremos desplegar en el cluster local, elegimos "Deploy to Cluster" y luego nuestra configuración predefinida "Local Cluster". Cada despliegue necesita una Etiqueta. Usamos "yahoo-quotes-" seguido de un macro "${build-timestamp}" para identificar el Despliegue. El macro será reemplazado por una marca de tiempo al momento de la transferencia del despliegue. Esto asegura que siempre obtengamos una etiqueta diferente con cada Despliegue.

Seleccionamos desplegar todos los Workflows que hemos creado (solo uno). Por último, iniciamos la transferencia del despliegue haciendo clic en "TRANSFER DEPLOYMENT TO CLUSTER" (Asegúrate de que el Cluster al que estás desplegando esté en funcionamiento).

Si el despliegue fue bien, deberías ver esto:

De lo contrario, se mostrará un mensaje de error, guiándote sobre cómo solucionar el problema.

Activando el Despliegue

Ahora deberíamos estar listos para activar el Despliegue. Para esto, cambiamos a la pestaña "CLUSTER". Esto nos da una vista de todo lo relacionado con el "cluster". En caso de que estés gestionando más de un cluster, asegúrate de tener seleccionado el correcto desde el cuadro desplegable en la parte superior izquierda.

Hacerlo el Despliegue predeterminado

Selecciona "Deployment Storage" del árbol a la izquierda. Aquí es donde encontramos todos los Despliegues que actualmente son conocidos por el cluster seleccionado. En nuestro ejemplo de captura de pantalla, en la sección "Deployment Configuration" vemos 1 "DeploymentRoot": Este es el despliegue básico vacío predeterminado que siempre está presente. 2 "yahoo-quotes-20221011093550": Este es el Despliegue que acabamos de transferir al cluster. Para activar ahora el nuevo Despliegue en el cluster, selecciónalo y luego marca la casilla "is the cluster's default deployment".

Programación

Ahora que el Despliegue está activo en el Cluster, necesitamos verificar si realmente está ejecutando alguna instancia del Workflow. Si es la primera vez que despliegas este Workflow, la respuesta probablemente sea "no". Vamos a comprobarlo:

  • Selecciona la pestaña "Cluster"
  • Selecciona la entrada "Scheduler Master" en el árbol a la izquierda

  • En el cuadro de Configuración del Scheduler, selecciona el nodo del Scheduler en el árbol
  • A continuación, asegúrate de que el número objetivo de instancias esté configurado al menos en 1. Configurarlo a un número mayor iniciará más instancias del mismo Workflow. En unos pocos segundos deberías ver la instancia iniciada. Solo necesitas hacer esto una vez. La próxima vez que despliegues el Workflow, el Reactive Engine recordará el número de instancias que deseas ejecutar de este Workflow. También puedes definir la configuración del Scheduler que deseas como parte de un Despliegue. Eso es para otra demostración, sin embargo.

Estado del Engine

Cambia a la pestaña "Engine". Asegúrate de que todas las categorías del Engine estén en verde. También verifica el estado de los Assets individuales en el árbol a la izquierda.

Verificación de Resultados

Tan pronto como hayas programado el Workflow (arriba), comienza a consultar la interfaz de Yahoo Finance para obtener resultados cada pocos segundos.

Dirígete a la pestaña Audit Trail para ver los resultados que aparecen en el Stream Log en formato JSON:

Por supuesto, esta salida es solo para fines de demostración. En un entorno de trabajo real, procesarías estos datos aguas abajo en el Workflow.

Resumen

Esta demostración destaca cómo puedes crear un Http-Client-Workflow sobre la marcha sin mucho esfuerzo. Y obtienes mucho más con eso de inmediato:

  • Reactive — Adopta el paradigma de procesamiento reactivo. Totalmente construido sobre la gestión de flujos reactivos en el núcleo
  • Alta escalabilidad — Escala dentro de una instancia de motor y más allá a través de múltiples motores y nodos distribuidos
  • Resiliencia — Seguro ante fallos en entornos distribuidos. Operación completa 24/7 y capacidad de actualización
  • Despliegue automático — Despliega configuraciones cambiadas con un solo clic
  • Real-time y batch — Ejecuta tanto integraciones de datos en tiempo real como por lotes usando la misma plataforma
  • Métricas — Generación automática de métricas para usar en tu kit de herramientas de monitoreo y alertas favorito (por ejemplo, Prometheus)

Hay demasiadas características para explicar aquí. Para más información, por favor consulta la documentación o simplemente contáctanos en hello@layline.io. ¡Gracias por leer!

Recursos

#Recurso
1Github: Sample Http-Client for Yahoo Finance (archivos de prueba de entrada en el directorio _test_files del Proyecto)
Share:

Enjoyed this article?

Subscribe to get more insights delivered to your inbox.