Order Service en Java reemplaza la version realizada en Python del proyecto ecommerce.
El motivo de este proyecto es para poder modelar de otra forma el mismo proyecto para poder mostrar ejemplos académicos.
Es un proyecto que implementa el patron Event Sourcing y Command and Query Responsibility Separation para almacenar los distintos eventos que se producen en las ordenes. Maneja algunas proyecciones como ejemplos.
La documentación de las api también se pueden consultar desde el home del microservicio que una vez levantado el servidor se puede navegar en localhost:3004
Las ordenes sólo puede usarse por usuario autenticados, ver la arquitectura de microservicios de ecommerce.
Las ordenes tienen una fuerte dependencia del catalogo:
- Se validan los artículos contra el catalogo.
- Se descuentan los artículos necesarios.
- Se puede devolver articulos si la orden se cancela.
Ver la arquitectura de microservicios de ecommerce.
Las ordenes comienza en el cart, cart emite un evento place-order, a través de rabbit.
Ver tutorial de instalación en ecommerce en la raíz.
La comunicación de eventos es a través de rabbit en la mayoría de los casos.
Ver tutorial de instalación en ecommerce en la raíz.
Java JDK (En este caso coretto 21, bajado desde intellij) agregar JAVA_HOME y poner el directorio bin en el path.
Establecer las variables de entorno sujeridas en las instalaciones. Tanto los ejecutables de java, como gradle deben poder encontrarse en el path.
Se clona el repositorio en el directorio deseado.
gradle clean build
Nos paramos en la carpeta donde se encuentra el archivo build.gradle y ejecutamos :
gradle run
La primera vez que ejecute descarga las dependencias, puede tardar un momento.
Apidoc es una herramienta que genera documentación de apis para proyectos node (ver Apidoc).
El microservicio muestra la documentación como archivos estáticos si se abre en un browser la raíz del servidor localhost:3004
Ademas se genera la documentación en formato markdown.
Para que funcione correctamente hay que instalarla globalmente con
npm install apidoc -g
npm install -g apidoc-markdown2
La documentación necesita ser generada manualmente ejecutando la siguiente linea en la carpeta raíz :
apidoc -o www
apidoc-markdown2 -p www -o README-API.md
Esto nos genera una carpeta www con la documentación, esta carpeta debe estar presente desde donde se ejecute el proyecto, aunque se puede configurar desde el archivo de properties.
Este servidor se configura con variables de entorno
SERVER_PORT = Puerto del servidor (3004) AUTH_SERVICE_URL = Servidor Auth (http://localhost:3000) RABBIT_URL = Rabbit (localhost) MONGO_URL = Url de mongo (localhost) WWW_PATH = Path documentación (www)
Este archivo permite configurar parámetros del servidor, ver ejemplos en config-example.json.
docker build --no-cache -t dev-order-java .
# Mac | Windows
docker run -it --name dev-order-java -p 3004:3004 -v $PWD:/app dev-order-java
# Linux
docker run -it --add-host host.order.internal:172.17.0.1 --name dev-order-java -p 3004:3004 -v $PWD:/app dev-order-java