Back to articles
Decoupling a Live App with Domain Events (Part 2)

Decoupling a Live App with Domain Events (Part 2)

via Dev.toRobert Goniszewski

In Part 1 of this series , we introduced RabbitMQ and built our proof-of-concept: the EventBusService , RabbitMQProvider , a DLX retry pattern, and our first emitter ( CommentService.createComment() ). By the end of Phase 0, we had one event running reliably in production behind a feature flag. For Phase 1, we applied this pattern to all Tier 1 services. 14 Zod schemas, 25 queue handlers across 3 consumer classes were built, and emit sites were added to CommentService , RecordService , and OccurrenceCrudHelper . We also added 79 new tests. Here is how we executed Phase 1, the design choices we made, and a tricky bug that changed how we guard event bus access. The Dual-Write Strategy Our top priority for Phase 1 was safety. Since IHA has active users, we couldn't risk breaking the app. Switching entirely from direct service calls to event emissions wasn't safe yet. Instead, we used a dual-write strategy. Services now emit events and run their existing inline side effects. If the event b

Continue reading on Dev.to

Opens in a new tab

Read Full Article
7 views

Related Articles