Entregable | Importador de datos simulados del DataSet de Murcia |
---|---|
Fecha | 28/04/2021 |
Revisado por | Paloma Terán Pérez |
Proyecto | ASIO (Arquitectura Semántica e Infraestructura Ontológica) en el marco de la iniciativa Hércules para la Semántica de Datos de Investigación de Universidades que forma parte de CRUE-TIC |
Módulo | Importador de datos simulados |
Tipo | Software |
Objetivo | Importador de datos simulados para el proyecto Backend SGI (ASIO). Se trata de un proceso batch configurado mediante Spring Batch. |
Estado | 100% La simulación está completa al 100% |
Próximos pasos | Completado. |
Documentación | Manual de usuario Manual de despliegue Documentación técnica |
Master | |
---|---|
Quality Gate |
Importador de datos simulados para el proyecto Backend SGI (ASIO). Se trata de un proceso batch configurado mediante Spring Batch.
Para iniciar el entorno de desarrollo se necesita cumplir los siguientes requisitos:
- OpenJDK 11
- Eclipse JEE 2019-09 con plugins:
- Spring Tools 4
- m2e-apt
- Lombok
- Docker
La metodología de desarrollo es Git Flow.
La inicialización de los elementos adicionales al entorno de desarrollo se realiza con docker.
En el directorio docker-devenv se ha configurado un fichero docker-compose.yml para poder arrancar el entorno de desarrollo.
Para arrancar el entorno:
docker-compose up -d
Para pararlo:
docker-compose down
Se han configurado los siguientes Jobs:
academicInstitutionJob
: job encargado de simular datos de tipo "Academic institution"researcherJob
: job encargado de simular datos de tipo "Researcher"titleDegreeJob
: job encargado de simular datos de tipo "Title - Degree"
Estos jobs se encargan de leer el fichero CSV correspondiente, generar un JSON con los datos y posteriormente insertarlo en un topic de Kafka.
app.kafka.input-topic-name
: Nombre del topic para los datos de entrada. Valor por defecto: input-dataapp.data.path
:Directorio en el que se encuentran los CSV para la carga de datos, en caso de estar vacío se tomarán del classpath. Valor por defecto vacíospring.kafka.bootstrap-servers
: Dirección del servidor bootstrap de Kafka. Valor por defecto: localhost:29092
Para la creación de Jobs, se deben seguir las instrucciones provistas en la documentación de Spring Batch.
Si se crea un solo empaquetado con varios jobs y solamente se quiere ejecutar uno en cada ejecución, se puede hacer pasando el siguiente parametro a la máquina virtual:
-Dspring.batch.job.names=job1,job2
Para la configuración de la ejecución periodica de jobs, se utilizarán las herramientas proporcionadas por los sistemas operativos Windows / Linux en el que se ejecute la aplicación.
Simplemente habría que ordenarle ejecutar el comando necesario. Por ejemplo:
java -jar -Dspring.batch.job.names=importUserJob {jar-name}.jar
Sustituyendo {jar-name}
por el nombre del fichero JAR generado.
No es necesario especificar la clase de inicio de la aplicación, ya que el fichero MANIFEST.MF generado ya contiene la información necesaria. Solamente se especificarán los parametros necesarios.
En entornos más complejos, se pueden usar gestores de cron como por ejemplo JobScheduler: https://www.sos-berlin.com/jobscheduler
Será preciso configurar las siguientes variables de entorno cuando se instale en un entorno real:
Variable | Descripción | Valor por defecto |
---|---|---|
APP_PERSISTENCE_DATASOURCE_USERNAME |
Nombre del usuario de acceso a la base de datos | |
APP_PERSISTENCE_DATASOURCE_PASSWORD |
Contraseña del usuario de acceso a la base de datos | |
APP_PERSISTENCE_DATASOURCE_URL |
URL de acceso a la base de datos MySQL | jdbc:mysql://localhost:3306/asio_jobs?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 |
APP_KAFKA_INPUT_TOPIC_NAME |
Nombre del topic de Kafka de entrada | input-data |
APP_KAFKA_CREATE_TOPICS |
Flag que indica si debe crear automáticamente los topics de Kafka. Valores admisibles true y false |
false |
SPRING_KAFKA_BOOTSTRAP_SERVERS |
URL del servicio de Kafka para los productores | localhost:29092 |
APP_DATA_PATH |
Ubicación de los ficheros CSV de entrada. En caso de estar vacío se toman del classpath | |
APP_DATA_INITIAL |
Flag booleano que indica si se debe cargar el dataset inicial. Valores admisibles true y false |
false |
SPRING_BATCH_INITIALIZE_SCHEMA |
Indica si se deben inicializar los esquemas de Spring Batch. Valores admisibles: always y never |
never |