@volontariapp/workers 1.3.8 → 1.3.11-snap-d0fb360
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +64 -0
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.3.11
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @volontariapp/messaging@2.10.3
|
|
9
|
+
- @volontariapp/database@3.4.6
|
|
10
|
+
- @volontariapp/outbox@0.9.43
|
|
11
|
+
|
|
12
|
+
## 1.3.10
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies []:
|
|
17
|
+
- @volontariapp/messaging@2.10.2
|
|
18
|
+
- @volontariapp/logger@0.2.7
|
|
19
|
+
- @volontariapp/database@3.4.5
|
|
20
|
+
- @volontariapp/outbox@0.9.42
|
|
21
|
+
- @volontariapp/bridge@1.0.6
|
|
22
|
+
- @volontariapp/config@3.2.2
|
|
23
|
+
- @volontariapp/health-check@1.0.6
|
|
24
|
+
|
|
25
|
+
## 1.3.9
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- README bump
|
|
30
|
+
|
|
31
|
+
- Updated dependencies []:
|
|
32
|
+
- @volontariapp/bridge@1.0.5
|
|
33
|
+
- @volontariapp/config@3.2.1
|
|
34
|
+
- @volontariapp/database@3.4.4
|
|
35
|
+
- @volontariapp/health-check@1.0.5
|
|
36
|
+
- @volontariapp/logger@0.2.6
|
|
37
|
+
- @volontariapp/messaging@2.10.1
|
|
38
|
+
- @volontariapp/outbox@0.9.41
|
|
39
|
+
|
|
3
40
|
## 1.3.8
|
|
4
41
|
|
|
5
42
|
### Patch Changes
|
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# @volontariapp/workers
|
|
2
|
+
|
|
3
|
+
## Overview & Background Processing
|
|
4
|
+
|
|
5
|
+
Le package `workers` fournit l'infrastructure de base (Base Classes, Audits, Handlers) pour l'ensemble des processus asynchrones de Volontariapp.
|
|
6
|
+
Il travaille en tandem avec la librairie `@volontariapp/outbox`. Là où l'`outbox` *produit* les messages vers Redis (BullMQ), le package `workers` *consomme* et *traite* ces messages.
|
|
7
|
+
|
|
8
|
+
## Cycle de Vie d'un Job
|
|
9
|
+
|
|
10
|
+
Ce package implémente un système d'audit robuste qui enregistre les transitions d'état de chaque job dans la base de données.
|
|
11
|
+
|
|
12
|
+
```mermaid
|
|
13
|
+
stateDiagram-v2
|
|
14
|
+
[*] --> Redis_BullMQ : Outbox pushes job
|
|
15
|
+
|
|
16
|
+
state "Worker Logic" as WL {
|
|
17
|
+
Redis_BullMQ --> Working : Worker pops job
|
|
18
|
+
Working --> Success : Exécution métier OK
|
|
19
|
+
Working --> Failed : Exécution erreur / Timeout
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
Working --> DB_Audit : INSERT job_audit (Working)
|
|
23
|
+
Success --> DB_Audit : UPDATE job_audit (Done)
|
|
24
|
+
Failed --> DB_Audit : UPDATE job_audit (Failed)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Structure des Dossiers
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
src/
|
|
31
|
+
├── consumers/ # Wrappers BullMQ gérant le concurrency et la résilience
|
|
32
|
+
├── audits/ # Repositories pour écrire dans les tables d'audit SQL
|
|
33
|
+
├── handlers/ # Classes abstraites de base pour implémenter un Worker
|
|
34
|
+
└── test/ # Utilitaires de mock BullMQ pour les tests
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Exemple d'Implémentation
|
|
38
|
+
|
|
39
|
+
### Création d'un Worker Métier
|
|
40
|
+
|
|
41
|
+
Pour créer un worker dans un microservice (ou un service worker dédié), il suffit d'étendre la classe de base fournie par ce package. La base se charge de l'audit SQL et de la gestion des erreurs de manière transparente.
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { BaseJobHandler, JobAuditService } from '@volontariapp/workers';
|
|
45
|
+
|
|
46
|
+
export class NotifyFollowersWorker extends BaseJobHandler<NotifyPayload> {
|
|
47
|
+
constructor(
|
|
48
|
+
auditService: JobAuditService,
|
|
49
|
+
private readonly notificationService: INotificationService
|
|
50
|
+
) {
|
|
51
|
+
super(auditService, 'notify-followers'); // Nom du job
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Seule la logique métier doit être implémentée
|
|
55
|
+
protected async processJob(payload: NotifyPayload): Promise<void> {
|
|
56
|
+
const followers = await this.notificationService.getFollowers(payload.eventId);
|
|
57
|
+
|
|
58
|
+
for (const follower of followers) {
|
|
59
|
+
await this.notificationService.pushNotification(follower.id, payload.message);
|
|
60
|
+
}
|
|
61
|
+
// L'audit "Working" et "Done" est géré automatiquement par le BaseJobHandler
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volontariapp/workers",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.11-snap-d0fb360",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"provenance": true
|
|
@@ -39,13 +39,13 @@
|
|
|
39
39
|
"db:down": "docker compose -f ../../ci-tools/testing/docker-compose.yml --profile test stop test-db redis"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@volontariapp/bridge": "1.0.
|
|
43
|
-
"@volontariapp/config": "3.2.
|
|
44
|
-
"@volontariapp/database": "3.4.
|
|
45
|
-
"@volontariapp/health-check": "1.0.
|
|
46
|
-
"@volontariapp/logger": "0.2.
|
|
47
|
-
"@volontariapp/messaging": "2.10.
|
|
48
|
-
"@volontariapp/outbox": "0.9.
|
|
42
|
+
"@volontariapp/bridge": "1.0.6",
|
|
43
|
+
"@volontariapp/config": "3.2.2",
|
|
44
|
+
"@volontariapp/database": "3.4.6-snap-d0fb360",
|
|
45
|
+
"@volontariapp/health-check": "1.0.6",
|
|
46
|
+
"@volontariapp/logger": "0.2.7",
|
|
47
|
+
"@volontariapp/messaging": "2.10.3-snap-d0fb360",
|
|
48
|
+
"@volontariapp/outbox": "0.9.43-snap-d0fb360"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@nestjs/bullmq": "^11.0.0",
|
|
@@ -59,9 +59,9 @@
|
|
|
59
59
|
"@nestjs/common": "^11.0.0",
|
|
60
60
|
"@types/jest": "^30.0.0",
|
|
61
61
|
"@types/node": "^24.0.0",
|
|
62
|
-
"@volontariapp/database": "3.4.
|
|
63
|
-
"@volontariapp/outbox": "0.9.
|
|
64
|
-
"@volontariapp/testing": "1.0.
|
|
62
|
+
"@volontariapp/database": "3.4.6-snap-d0fb360",
|
|
63
|
+
"@volontariapp/outbox": "0.9.43-snap-d0fb360",
|
|
64
|
+
"@volontariapp/testing": "1.0.3",
|
|
65
65
|
"bullmq": "^5.76.5",
|
|
66
66
|
"ioredis": "^5.3.7",
|
|
67
67
|
"jest": "^30.3.0",
|