Workshop: Event-driven microservices: making sure each messages is processed exactly once. Part 1/2
The workshop focuses on issues related to processing messages exchanged between components of distributed systems, especially with ensuring that business logic for a given message is triggered exactly once.
We'll start by asking ourselves a question why the systems we build need to be distributed.
We'll see how duplicating messages is the only way to get components to reliably exchange information. Finally, we'll spend most of our time identifying subtle issues inherent to message processing, devising solutions to these issues and encoding these solutions in reusable patterns.
Join me in the series of ten hands-on exercises interleaved with short lectures after which you'll have good understanding of most of the things that can go wrong when processing messages and enough knowledge to either build build a bullet-and-duplicate-proof message processor or (even better) find a framework that implements one for you.
Some of the topic we will cover include:
- Handling message broker failures when receiving messages
- Handling message broker failures when sending out messages
- Handling data store failures and avoiding ghost messages
- De-duplication based on message ID
- Deterministic message ID generation
- Deterministic message content generation
- Atomic store-and-publish