Docuemntacion del uso del servicio
This commit is contained in:
102
README.md
102
README.md
@@ -27,3 +27,105 @@ Webhooks Soportados:
|
||||
- [ ] orders/delete
|
||||
|
||||
Propuestas:
|
||||
|
||||
## Requisitos
|
||||
|
||||
- Docker (linux) o Docker desktop (widows - WSL)
|
||||
- Ubuntu 24 o similar
|
||||
|
||||
## Introduccion
|
||||
|
||||
El objetivo es tener un grupo compose con
|
||||
|
||||
- Una BDD para almacenar ejemplos
|
||||
- Un servicio que envie peticiones periodicamente
|
||||
|
||||
Este grupo tiene definida una red externa en el `docker-compose.yaml` que
|
||||
tiene que coincidir con la red de los demás compose ejecutados, por ejemplo:
|
||||
|
||||
```yaml
|
||||
# Esto tiene que aparecer en el yaml del simulador
|
||||
name: p-simulador-webhooks
|
||||
networks:
|
||||
default:
|
||||
name: network-test # Tiene que coincidir con el compose objetivo
|
||||
external: true
|
||||
```
|
||||
|
||||
```yaml
|
||||
# Esto en el yaml del microservicio
|
||||
name: sf-shopify-orders
|
||||
networks:
|
||||
default:
|
||||
name: network-test
|
||||
```
|
||||
|
||||
### Ejecución
|
||||
|
||||
Para lanzar los contenedores se ejecuta el script `run.local.sh` que va a lanzar
|
||||
el compose de la carpeta `/development/local`. Habrá que ver para los demás entornos.
|
||||
|
||||
### Configuración de envío periódico de webhooks
|
||||
|
||||
La configuración de los webhooks se hace en `/src/config/initial_hosts.ts`.
|
||||
|
||||
En la constante `INITIAL_EVENTS` están los eventos que se van a emitir periodicamente.
|
||||
Tienen la estructura:
|
||||
|
||||
```ts
|
||||
export type ScheduledEvent = {
|
||||
topic: string;
|
||||
numberOfMessages?: number;
|
||||
periodMs?: number;
|
||||
};
|
||||
```
|
||||
|
||||
Un ejemplo sería:
|
||||
|
||||
```ts
|
||||
{
|
||||
topic: "order/create", // Emite mensajes de tipo order/create
|
||||
numberOfMessages: -1, // Un numero negativo o indefinido de mensajes, indica que se mandan ilimintados
|
||||
periodMs: 5000 // 5s entre mensajes, si fuese indefinido el predefinido es 1s
|
||||
}
|
||||
```
|
||||
|
||||
> El periodo indica el mínimo entre mensajes, puede pasar mas tiempo si la maquina se
|
||||
> realentiza o si el event loop queda bloqueado.
|
||||
|
||||
### Configuración de los host que reciben webhooks
|
||||
|
||||
Para añadir un host nuevo se crea un nuevo objeto en la constante `INTIAL_HOSTS` tal que:
|
||||
|
||||
```ts
|
||||
type InitialHost = {
|
||||
topic: string;
|
||||
host: string;
|
||||
port: string;
|
||||
endpoint: string;
|
||||
method: "POST" | "PUT" | "DELETE";
|
||||
secretkey: string;
|
||||
};
|
||||
```
|
||||
|
||||
Por ejemplo si corremos el servicio en un contenedor llamado `cliente-webhooks`
|
||||
se tiene que añadir un objeto:
|
||||
|
||||
```ts
|
||||
{
|
||||
topic: "order/create",
|
||||
host: "localhost",
|
||||
port: "3500",
|
||||
endpoint: "/order/create",
|
||||
method: "POST",
|
||||
secretkey: webhooksConfig.apiSecret || "1234",
|
||||
}
|
||||
```
|
||||
|
||||
Esta configuración implica que ese host va recibir una petición HTTP cada vez que
|
||||
se emite un mensaje con el topic `order/create`, se va a enviar al puerto `3500`
|
||||
y al endpoint `order/create` mediante el método `POST`. Tiene un campo
|
||||
"opcional" para la clave para la firma HMAC, si se quiere usar tiene que
|
||||
coincidir en el cliente y el servidor, la clave del servidor se puede guardar
|
||||
en el .env o directamente en el objeto **NO SE DEBEN USAR CLAVES REALES DE PRODUCCIÓN**,
|
||||
con poner "1234" en los dos servicios la firma ya se hace correctamente.
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user