rabbit-worker/README.md

45 lines
1.4 KiB
Markdown

# Rabbit Worker (Go)
Consumes CRUD messages from RabbitMQ and writes to Postgres.
Комментарий: HTTP-эндпоинт нужен только для health-check, остальная логика работает через RabbitMQ.
## Environment variables
RabbitMQ:
- `AMQP_URL` (preferred), example: `amqp://user:pass@host:5672/vhost`
- or `RABBIT_HOST`, `RABBIT_PORT` (default 5672), `RABBIT_USER`, `RABBIT_PASSWORD`, `RABBIT_VHOST` (default `/`)
- `RABBIT_QUEUES` (comma-separated, default `crud_queue`)
- `RABBIT_DURABLE` (default `true`)
- `RABBIT_PREFETCH` (default `1`)
- `REQUEUE_ON_ERROR` (default `true`)
Postgres:
- `DATABASE_URL` (preferred)
- or `PGHOST`, `PGPORT` (default 5432), `PGUSER`, `PGPASSWORD`, `PGDATABASE` (default `postgres`), `PGSSLMODE` (default `require`)
- `PG_TABLE` (default `nubes_test_table`)
## Message format
JSON payload:
```json
{"action":"create","text":"hello","id":1}
```
Fields:
- `action`: `create` | `update` | `delete`
- `id`: required for `update` and `delete`
- `text`: used by `create` and `update`
If the payload is not JSON, it is treated as `create` with body as text.
Примечание: сообщения без `id` для update/delete считаются некорректными и отбрасываются.
## Build
```bash
cd /home/naeel/terraform/PROD_STAND/RABBIT/rabbit-worker
docker build -t <registry>/<image>:<tag> .
```