wso2 chakray
Gestión de APIs

Cómo crear microservicios con el módulo MSF4J de WSO2

18th octubre 2018

MSF4J es un framework que nos provee WSO2 para crear de manera rápida y sencilla microservicios. A lo largo de este post veremos cómo utilizarlo y sacar provecho a algunas de sus principales características: generación de una API REST, soporte con Swagger o control de excepciones.

Antes de comenzar resulta interesante destacar algunas de las ideas principales de este framework, y es que con él, nuestro proyecto final será un fichero JAR autodesplegable, gracias a que tiene un servidor Netty embebido. Pero para ello, además de tener un las clases propias de la API REST, también tendrá una clase raíz donde configuraremos la aplicación y otros elementos a nivel global.

MSF4J de WSO2

En la imagen podemos ver cómo creamos una instancia de ‘MicroservicesRunner’ que será la clase que nos permitirá desplegar nuestro proyecto. A través de ella podremos configurarlo de una forma u otra, por ejemplo asociando una clase para el control de excepciones como es ‘ServiceExceptionMapper’ o indicando las clases que contendrán nuestra API REST, como es ‘BookServiceImpl’.

-¡Este post te interesa! Descubre cómo aplicar microservices a una gran empresa-

Ahora veremos la clase principal, ‘BookServiceImpl’ en ella configuraremos nuestro microservicio a través de las siguientes anotaciones JAX-RS:

  • @Path: Se indicará la ruta de acceso de nuestra API. A nivel de clase nos permite indicar la raíz de la ruta y a nivel de método cuál es la ruta exacta para cada uno de ellos.
  • @Produces: Se determinarán en qué formato se producirán los métodos, en este caso JSON.
  • @GET/@POST/@DELETE/@PUT: Con ella además de indicar que método HTTP debe usarse para en conjunto con el path,también se podrá acceder al método.
  • @PathParam: Nos permite determinar que el valor obtenido por el parámetro de entrada vendrá como parte de la ruta. Ejemplo: /book/1.
  • @Context: Nos permitirá acceder a los objetos ‘Request’ y ‘Response’ de la propia llamada HTTP junto con todos sus datos.

anotaciones JAX-RS anotaciones JAX-RS WSO2

En el ejemplo tendremos dos métodos que nos permitirán lo siguiente: por un lado obtener un libro concreto a través del método ‘getBookById’; y por el otro conseguir  el listado completo de libros a través del método ‘getList’, todo ello a través de llamadas HTTP GET.

-Conoce todo lo que debes saber sobre los microservicios y conviértete en un experto-

Ahora veremos cómo crear una clase que nos permita controlar los errores no controlados de nuestros microservicios y devolver una respuesta tipo a través de la interfaz ‘ExceptionMapper’ y su método ‘toResponse’. Resulta interesante destacar que podremos hacer distintos controles de errores en base a tipos de excepciones, para ello solo se deberá indicar qué excepción queremos controlar al implementar la interfaz ‘ExceptionMapper’. En nuestro caso devolveremos un código 200 y un mensaje ‘Internal server error’ en formato JSON.

formato JSON

Recordemos que previamente la hemos configurado  en la clase ‘Application’.

Por último, nos queda explicar cómo podemos dar soporte Swagger a nuestro proyecto. Para ello solo deberemos incluir como dependencia una librería. Este paso nos servirá además para indicar cómo configurar este proyecto con maven.

-WSO2 ESB Tutorial: Entradas en el registro local, puntos finales reutilizables y secuencias-

A nivel global nuestro proyecto debe heredar de ‘msf4j-service’ a través del cual MSF4J nos proveerá de todas las dependencias y configuración interna, para que nuestros microservicios estén listos con apenas codificar dos clases. Aparte le añadiremos la dependencia ‘msf4j-swagger’ para añadirle el soporte Swagger que solicitamos. En principio para esto no necesitaríamos nada más, solo acceder a la siguiente ruta: ‘http://{server}:{port}/swagger’ una vez que nuestra aplicación esté corriendo.

En esta ruta tendremos el esquema y descripción de nuestro microservicio, en base a las anotaciones JAX-RS que hemos incluido.

 JAX-RS WSO2 CHAKRAY

Tras esto ya tendríamos una idea de cómo crear un microservicio. Para poder ejecutarlo en nuestro local solo tendríamos que empaquetar el proyecto con el comando maven ‘package’. Posteriormente ejecutar a través de consola con el comando ‘java -jar MS4JExample-1.0.0-SNAPSHOT.jar’, ypara acceder a él desde local nos valdría cualquiera de las dos siguientes urls: ‘http://localhost:9090/book/1’ o ‘http://localhost:9090/book/list’. Si queremos probar el ExceptionMapper podemos acceder a la siguiente url ‘http://localhost:9090/book/0

Ahora que ya has comprobado lo sencillo que puede resultar la creación de microservices, es el momento de ponerse manos a la obra. ¡Espera! no te asustes. Si quieres más asesoramiento o ayuda para iniciarte, nuestro equipo de expertos de Chakray estarán encantados de ayudarte, ¡contáctanos!

Daniel Blanco Chakray

microservicios guía