You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+36-7Lines changed: 36 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,9 @@
11
11
- читает `source.raw.v1` из RabbitMQ;
12
12
- валидирует raw-события;
13
13
- нормализует payload до формата `source.normalized.v1`;
14
-
- публикует нормализованные события и отправляет ingest mutation в `backend-api`.
14
+
- отправляет ingest mutation `ingestNormalizedItem` в `backend-api` с заголовком `x-ingest-token`;
15
+
- после успешного ingest публикует нормализованные события в `source.normalized.v1`;
16
+
- при transient ошибках отправляет сообщение в retry queue, а poison messages складывает в DLQ.
15
17
16
18
## Черновая реализация
17
19
@@ -21,6 +23,20 @@
21
23
- GraphQL-клиент отправки в backend (`src/backend-client.ts`);
22
24
- Dockerfile и CI workflow.
23
25
26
+
## Переменные окружения
27
+
28
+
-`RABBITMQ_URL` - адрес RabbitMQ.
29
+
-`QUEUE_RAW_EVENT` - основная очередь входящих raw-событий, по умолчанию `source.raw.v1`.
30
+
-`QUEUE_RETRY_EVENT` - очередь retry, по умолчанию `source.raw.retry.v1`.
31
+
-`QUEUE_DEAD_LETTER_EVENT` - очередь dead-letter, по умолчанию `source.raw.dlq.v1`.
32
+
-`QUEUE_NORMALIZED_EVENT` - очередь нормализованных событий, по умолчанию `source.normalized.v1`.
33
+
-`API_BASE_URL` - базовый URL `backend-api`, по умолчанию `http://localhost:3000`.
34
+
-`GRAPHQL_PATH` - GraphQL path, по умолчанию `/graphql`.
35
+
-`API_GRAPHQL_URL` - явный GraphQL URL. Если задан, имеет приоритет над `API_BASE_URL + GRAPHQL_PATH`.
36
+
-`API_INGEST_TOKEN` - токен для заголовка `x-ingest-token`. Должен совпадать с `INGEST_API_TOKEN` в `backend-api`.
37
+
-`SHARED_CONTRACTS_DIR` - путь к `shared-contracts`.
38
+
-`RETRY_ATTEMPTS`, `RETRY_BASE_DELAY_MS`, `PREFETCH`, `LOG_LEVEL` - параметры обработки и логирования.
39
+
24
40
## Локальный запуск
25
41
26
42
```bash
@@ -29,13 +45,26 @@ npm install
29
45
npm run start:dev
30
46
```
31
47
32
-
## Важные переменные
48
+
Для Docker Compose сервис ожидает:
49
+
50
+
- RabbitMQ на `RABBITMQ_URL`;
51
+
-`backend-api` на `API_BASE_URL` или `API_GRAPHQL_URL`;
52
+
- смонтированный `shared-contracts` в `SHARED_CONTRACTS_DIR`.
53
+
54
+
## Ожидаемые очереди
55
+
56
+
-`source.raw.v1` - входящие события.
57
+
-`source.raw.retry.v1` - delayed retry queue.
58
+
-`source.raw.dlq.v1` - dead-letter queue.
59
+
-`source.normalized.v1` - успешно обработанные нормализованные события.
60
+
61
+
## Как проверить обработку
33
62
34
-
-`RABBITMQ_URL`
35
-
-`QUEUE_RAW_EVENT`
36
-
-`QUEUE_NORMALIZED_EVENT`
37
-
-`API_GRAPHQL_URL`
38
-
-`SHARED_CONTRACTS_DIR`
63
+
1. Опубликуй валидное сообщение в `source.raw.v1`.
64
+
2. В логах worker должны появиться строки `connected to rabbitmq`, `consuming queue`, `raw event validated`, `normalized event created`, `ingest success`, `published normalized event`, `message acknowledged`.
65
+
3. Проверь, что сообщение появилось в `source.normalized.v1`, а запись создалась в `backend-api`.
66
+
4. Для transient ошибки временно выключи `backend-api`: worker должен логировать `ingest failed` и `retry scheduled`, а не падать.
67
+
5. Для poison message отправь невалидный JSON или payload, нарушающий schema: worker должен логировать `message dead-lettered`, сообщение должно уйти в `source.raw.dlq.v1`.
0 commit comments