¿Cómo crear un microservicio que comunique con la Plataforma?

¿Cómo crear un microservicio que comunique con la Plataforma?

Introducción

Podemos comunicarnos con la Plataforma a través de un microservicio, para ello se ha dejado disponible una plantilla con un pequeño ejemplo de código.

Paso 1: descargar el código fuente de la plataforma

Para poder descargar la plantilla debes descargar el código fuente de la plataforma:

git clone https://github.com/onesaitplatform/onesait-cloud-platform-examples.git

Paso 2: copiar la plantilla del microservicio y editarla

Una vez descargado el código fuente de la plataforma, ve hasta el directorio /onesait-cloud-platform/sources/examples y seleccionamos el directorio microservice-template:

Si analizas este directorio, encontrarás el archivo pom.xml que es un fichero que necesita Maven y que contiene información del proyecto así como la configuración del mismo, dependencias de librerías, plugins de empaquetado, etc... 

Por un lado tenemos las dependencias de Spring y por otro tenemos la librería onesaitplatform-iotclient4springboot que permite comunicar con plataforma. Para más información, lee este post

Es recomendable utilizar la última versión disponible en el repositorio.

<dependency> <groupId>com.minsait.onesait.platform</groupId> <artifactId>onesaitplatform-iotclient4springboot</artifactId> <version>1.3.6</version> </dependency>

Esta dependencia se encuentra en el repositorio público de onesaitplatform.

<repositories> <repository> <id>onesait</id> <url>https://nexus.onesaitplatform.com/nexus/content/repositories/releases/</url> </repository> </repositories>


Es en esta sección donde tendrán que ser añadidas todas las dependencias que necesite tu microservicio.

Paso 3: compilar el código fuente del microservicio

Desde el directorio en el que hayamos copiado la plantilla, lanza el comando:

mvn clean install


Este comando se encargará de descargar las dependencias y compilar los fuentes, así como generar los .class y empaquetados del microservicio.

Una vez ejecutado el comando, deberías ver algo como esto:

Paso 4: Ejecutar el microservicio (con y sin Eclipse)

Este microservicio está escrito en lenguaje Java y usa el stack de Spring como framework de desarrollo, en concreto SpringBoot. Para ello se ha dejado definida la clase principal de la aplicación con las anotaciones necesarias, las principales:

@EnableAutoConfiguration
@ComponentScan

Dentro del Eclipse, si clicas con el botón derecho sobre la clase MicroserviceTemplateApplication.java y seleccionas Run As > Java Application

Si todo va correctamente, verás algo como:

También puedes arrancar tu microservicio fuera del Eclipse.

Lo primero es haber ejecutado el paso 3 para que se genera el .jar correspondiente. Si vas al directorio \microservice-template\target, encontrarás dos ficheros .jar.

Uno de ellos, el acabado en-exec.jar, es un fichero que incluye todas las dependencias, así como un Tomcat embebido en el cual se ejecutará tu módulo con el comando:

java -jar microservice-example-0.0.1-SNAPSHOT-exec.jar

Paso 5: Generar imagen Docker del microservicio y ejecutar el contenedor

El fichero application-docker.yml contiene propiedades específicas, y que sobreescriben las del fichero application.yml, para la ejecución del módulo dentro de un contenedor Docker:

Por otro lado, también tienes el fichero Dockerfile que contiene las instrucciones necesarias para generar la imagen Docker del microservicio. Para ello es necesario tener el Docker engine previamente instalado. Para generar la imagen sólo es necesario copiar el jar microservice-example-1.1.0-SNAPSHOT-exec.jar ubicado en el directorio /target del módulo al directorio /docker:

Y desde este directorio ejecutar la sentencia:

docker build -t onesaitplatform/microservice:latest


Con esto ya tienes la imagen generada en local. Para poder arrancar el contenedor, ejecuta el comando:

docker run -t -p 10000:10000 onesaitplatform/microservice:latest

Puedes acceder a tu módulo mediante un navegador web escuchando en el puerto 10000: http://localhost:10000/